Efficient Error Correction of Multi-Bit Errors

ABSTRACT

A circuitry for error correction includes a plurality of subcircuits for determining intermediate values Zw 0 , Zw 1 , Zw 2 , Zw 3  to be used as coefficients in an error correction expression (z 1   i , z 2   i , . . . , z m   i )=Zw 3 ·α 3j     i   +Zw 2 ·α 2j     i   +Zw 1 ·α j     i   +Zw 0 . The intermediate values Zw 0 , Zw 1 , Zw 2 , Zw 3  are determined depending on subsyndromes s 1 , s 3 , s 5  so that in case of a 1-bit, 2-bit, or 3-bit error z i =(z 1   i , z 2   i , . . . , z m   i )=(0, 0, . . . , 0) when an error occurred in the bit position i, and z i =(z 1   i , z 2   i , . . . , z m   i )≠(0, 0, . . . , 0) when no error occurred in the bit position i. A correction value Δv i =  for the bit position i may then be determined on the basis of the error correction expression evaluated for α j     i   .

FIELD

Some embodiments relate to a circuitry for error correction and/or error detection. Some embodiments relate to a method for error correction and/or error detection. Some embodiments relate to an arbitrary 3-bit correction.

BACKGROUND

Error detection and correction or error control are techniques that may enable reliable delivery of digital data over unreliable communication channels and/or unreliable data storage devices. Error detection and correction belong to the field of information theory and coding theory and find application in computer science and telecommunication. Many communication channels and/or data storages may be subject to channel noise and interference, and thus errors may be introduced during transmission/storage from the source to a receiver. Error detection techniques may allow detecting such errors, while error correction may enable reconstruction of the original data. The data to be transmitted or stored may be provided, for example, in the form of binary words of a certain length.

It is known, in binary sequences or binary words of a certain length, to correct n random 1-bit errors, 2-bit errors and random 3-bit errors using BCH codes by combinational error correction circuits, as it is for example described in Okano, H. and Imai, H., “A construction method of high speed decoders using ROM's for Bose-Chadhuri-Hocquenghem and Reed Solomon Codes”, IEEE Trans. Comp. C36 (10) 1165-1175, 1987.

When BCH codes are used over a Galois field GF(2^(m)), then n≧2^(m)−1 and the error syndrome s may consist of 3m components, wherein the first m components may form the subsyndrome s₁, the second m components the subsyndrome s₃ and the third m components the subsyndrome s₅, as it is common when using BCH codes. If the total parity is considered, the error syndrome may still contain a further binary component which is to be designated by s_(P).

SUMMARY

Embodiments provide a circuitry for error correction and possibly error detection of at least 1-bit, 2-bit and 3-bit errors of bits in an n-digit binary word v′=v₁′, . . . , v_(n)′ which resulted from bit errors from an n-digit codeword v=v₁, . . . , v_(n) of a binary BCH code C over the Galois field GF(2^(m)), wherein m≧4. The code C comprises a code distance of at least d≧7. The BCH code C comprises an H matrix H, so that m first rows of the H matrix form a submatrix H₁, m second rows of the H matrix form a second submatrix H₃ and further m rows of the H matrix form a third submatrix H₅ with

H ₁=(h ₁ ¹ , . . . ,h ₁ ^(n) ,H ₃=(h ₃ ¹ , . . . ,h ₃ ^(n)) and H ₅=(h ₅ ¹ , . . . ,h ₅ ^(n)),

wherein

h ₁ ¹=α^(j) ¹ , . . . ,h ₁ ^(n)=α^(j) ^(n) ,

h ₃ ¹=α^(3(j) ¹ ⁾ , . . . ,h ₃ ^(n)=α^(3(j) ^(n) ⁾,

h ₅ ¹=α^(5(j) ¹ ⁾ , . . . ,h ₅ ^(n)=α^(5(j) ^(n) ⁾,

applies, α is an element of the Galois field GF (2^(m)) in its vector representation as an m-component binary column vector and the respective exponent j of α^(j) is to be interpreted modulo 2^(m)−1 and n≧2^(m)−1 applies. The circuitry has the following features and comprises: a syndrome generator Synd for determining an error syndrome s, wherein m first components of s form an m-component subsyndrome s₁, m second components of s form a second m-component subsyndrome s₃ and further m components of s form a third subsyndrome s₅, wherein

s ₁ =H ₁ ·v′,s ₃ =H ₃ ·v′, and s ₅ =H ₅ ·v′

apply, a plurality of subcircuits so that for each bit v_(i)′ subject to possible error correction of the n-digit binary word v′=v₁′, . . . , v_(n)′ a subcircuit SK_(i) exists which is configured so that it forms, from intermediate values Zw₀, Zw₁, Zw₂, Zw₃ which are equal for all bit positions subject to possible error correction, a correction value Δv_(i) according to the following relation

Δv _(i)=

wherein

(z ₁ ^(i) ,z ₂ ^(i) , . . . ,z _(m) ^(i))=Zw ₃·α^(3j) ^(i) +Zw ₂·α^(2j) ^(i) +Zw ₁·α^(j) ^(i) +Zw ₀

and the intermediate values Zw₀, Zw₁, Zw₂, Zw₃ are determined depending on the subsyndromes s₁, s₃, s₅ so that in case of a 1-bit error or a 2-bit error or a 3-bit error the following applies: z^(i)=(z₁ ^(i), z₂ ^(i), . . . , z_(m) ^(i))=(0, 0, . . . , 0) when an error occurred in the bit position i and z^(i)=(z₁ ^(i), z₂ ^(i), . . . , z_(m) ^(i))≠(0, 0, . . . , 0) when no error occurred in the bit position i; for determining the intermediate values Zw₀, Zw₁, Zw₂, and Zw₃ one subcircuit SZw₀, SZw₁, SZw₂ and SZw₃ each exists which is each configured so that it provides the same intermediate values Zw₀, Zw₁, Zw₂ and Zw₃ from the sub-syndromes s₁, s₃, s₅ for each bit position subject to possible error correction of the word v′; and a combinational circuit Vkn exists which is configured so that it combines bits that are subject to possible error correction v_(i)′ in a componentwise manner with corresponding correction values Δv_(i) provided by the subcircuits SK_(i) into possibly corrected bits v_(i) ^(cor).

Embodiments provide a corresponding method for an error correction and error detection. Embodiments provide a corresponding non-transitory storage medium.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments of the present disclosure will be described using the accompanying figures, in which:

FIG. 1 shows a schematic block diagram of a circuitry for an error correction;

FIG. 2 shows a schematic block diagram of a possible implementation of a subcircuit SK_(i) for determining a correction signal Δv_(i) for the i-th bit of the word v′ on the basis of common intermediate values Zw₀, Zw₁, Zw₂, and Zw₃;

FIG. 3 shows a schematic block diagram of a possible implementation of a combinational circuit configured to combine the correction signals Δv_(i) with the word v′ to obtain the error-corrected word v^(cor);

FIGS. 4A to 4D show schematic block diagrams of possible implementation of subcircuits SZw₀, SZw₁, SZw₂, SZw₃ for determining the intermediate values Zw₀, Zw₂, and Zw₃;

FIG. 5 shows a schematic block diagram of a subcircuit that is configured to provide the intermediate values Zw₀, Zw₁, Zw₂, and Zw₃;

FIG. 6 shows a schematic block diagram of the circuitry of FIG. 1 supplemented by an error detection circuit;

FIG. 7 shows a schematic block diagram of a joint implementation of an error detection circuit and a subcircuit SZw₀ for providing the intermediate value Zw₀; and

FIG. 8 shows a schematic block diagram of a possible implementation of the error detection circuit of FIG. 7.

DETAILED DESCRIPTION

The conventional operation when correcting random 3-bit errors by combinational error correction circuits may be typically connected with a relatively high hardware expense and a relatively long signal run time for determining the corresponding error correction signals. In particular, a relatively long signal run time for correction signals may have a limiting effect on the clock rate.

It would be desirable to facilitate the correction of 1-bit, 2-bit and 3-bit errors in binary data words and in particular to improve the required error correction circuits so that an effort as small as possible and a signal run time as short as possible is required.

Theoretical Background

For the error correction of randomly distributed multi-bit errors, BCH codes may be used as it is known to a person skilled in the art and described for example in Lin, S., Costello, D. “Error Control Coding” Prentice Hall, 1983, wherein reference is in particular made to pages 143-160. Likewise, the document by Okano, H. and Imai, H., “A construction method of high speed decoders using ROM's for Bose-Chadhuri-Hocquenghem and Reed Solomon Codes”, IEEE Trans. Comp. C36 (10) 1165-1175, 1987 is to be mentioned in which combinational circuits for the error correction for BCH codes are presented.

A BCH Code is a special linear code which, as any linear code, may be described by a parity check matrix H and a generator matrix G which may for example be derived from the parity check matrix. If the code has the length of N and comprises k information bits, then H is an (M, N) matrix with M rows and N columns, wherein M=N−k. The generator matrix G is then a (k, N) matrix with k rows and N columns, and the code comprises M check bits.

An unshortened 3-bit error correcting BCH code may be described by an H matrix

$H = {\begin{pmatrix} H_{1} \\ H_{3} \\ H_{5} \end{pmatrix} = \left( {h_{1},\ldots \;,h_{N}} \right)}$

wherein the H matrix is presented in a separated form. Conventionally, H₁, H₃ and H₅ may be selected to be

H ₁=(α⁰,α¹, . . . ,α^(N-1))=(h ₁ ¹ , . . . ,h _(i) ¹ , . . . ,h _(N) ¹),

H ₃=(α⁰,α³, . . . ,α^(3i), . . . ,α^(3(N-1)))=(h ₁ ³ , . . . ,h _(i) ³ , . . . ,h _(N) ³),

and

H ₅=(α⁰,α⁵, . . . ,α^(5i), . . . ,α^(5(N-1)))=(h ₁ ⁵ , . . . ,h _(i) ⁵ , . . . ,h _(N) ⁵),

when the code is unshortened.

Here, α may be selected as an element of a finite field GF(2^(m)) which is also called a Galois field. Frequently, a may be selected to be a primitive element. Then, α^(i) for i=0, . . . , 2^(m)−2, except for the element 0, may assume any possible values of the Galois field. N=2^(m)−1 then applies. The exponents of α^(j), α^(3j) and of α^(5j) may be determined modulo 2^(m)−1.

H₁, H₃ and H₅ typically each may be (m, N) matrices comprising m rows and N=2^(m)−1 columns. In special application cases it may be the case that some rows of the m rows for example of the matrix H₅ may be linearly dependent. In such a case, rows of the matrix H₅ may be omitted until all rows are linearly independent. For example, the number of rows of the matrix H₅ may then also be smaller than m.

The elements α^(i) of the Galois field GF(2^(m)) in their vector representation may be m-digit binary column vectors.

If L columns of the H matrix of the unshortened BCH code are deleted, an H matrix of a shortened BCH code of the length n=N−L may be obtained. For a shortened code the following applies: n=N−L<2^(m)−1.

It is possible to supplement the H matrix H by a row consisting of only ones. An additional row consisting of only ones in the H matrix corresponds to the additional consideration of the total parity.

When considering the total parity the H matrix may have the form of

$H = \begin{pmatrix} H_{1} \\ H_{3} \\ H_{5} \\ P \end{pmatrix}$

wherein P is a row consisting of only ones.

It is also possible, when shortening the code, to delete all columns of the H matrix which, for example, in the components which correspond to the rows of the matrix H₃ comprise an even number of ones. The remaining columns of the H matrix may then only comprise columns which, in the components corresponding to the partial matrix H₃, always comprise an odd number of ones. In such a case, the total parity may simply be determined as an XOR sum of the components of the subsyndrome s₃, which may be advantageous. The rows which correspond to the partial matrix H₃ may then form a subset of rows, so that the components of columns which belong to this subset of rows comprise an odd number of ones. It is also possible to select a different subset of rows and delete columns when shortening the H matrix so that the remaining columns in the components which belong to the selected subset comprise an odd number of ones. The parity may then be formed as an XOR sum of the components of the syndrome which belong to the selected subset of rows.

Now a shortened BCH code of the length n is considered, wherein n=N L<2^(m)−1. A codeword of this code v=v₁, . . . , v_(n), which is also referred to as a code vector consists of n components v₁, v₂, . . . , v_(n). Here, a code vector may be described as a row vector or as a column vector. If a matrix is multiplied by a vector from the right, then the vector is to be interpreted as a column vector and the result is a column vector. If a matrix is multiplied by a vector from the left, then the vector is a row vector and the result of the multiplication is also a row vector. It is not required then to explicitly designate the corresponding vectors as being column vectors or row vectors as it is clear from the context whether it is a column vector or a row vector. If it is to be specially noted that a vector w is represented as a column vector, it is written as w^(T).

If a codeword v=v₁, . . . , v_(n) is erroneously changed into a word v′=v₁′, . . . , v_(n)′, then the difference between v and v′ may be described by an error vector e with e=e₁, . . . , e_(n)=v₁⊕v₁′, . . . , v_(n)⊕v_(n)′=v⊕v′

A component e_(i) of the error vector e is equal to 1, when v_(i) and v_(i)′ are different and v_(i)=v_(i)′⊕1= v_(i)′. A component e_(j) of the error vector e is equal 0, when v_(j) and v_(j)′ are equal and v_(j)=v_(j)′ applies.

If an error may be corrected by an error correction circuit, then the correction values output by the error correction circuit may be equal to the components of the error vector and the correction circuit in this case outputs the correction value e_(i) at the i-th output of its n outputs. The correction value e_(i) may then be XOR-ed with the component v_(i)′ to be corrected into v^(cor)=v_(i)′⊕e_(i). The correction values e_(i) may also be combined into a correction vector. The correction vector is equal to the error vector if the error may be corrected by the code. If the vector v is the code vector of a separable code wherein the data bits and the check bits in the code vector v are separated, then it is also possible to only correct the data bits or even only part of the data bits of the vector v′. In these cases, the bits for which the possibility of error correction is desired and/or implemented may be referred to as “bits subject to possible error correction”.

The error syndrome s=(s₁, s₃, s₅, s_(P)) of a word v′ may be determined by

s=H·v′  (1)

wherein,

s ₁ =H ₁ ·v′,  (2)

s ₃ =H ₃ ·v′,  (3)

s ₅ =H ₅ ·v′,  (4)

s _(P) =P·v′=(1, . . . ,1)·v′=v ₁ ′⊕v ₂ ′⊕ . . . ⊕v _(n)′  (5)

apply.

The error syndrome of a codeword v is typically equal to 0, so that for a codeword v the following applies

s=H·v=0  (6)

and for a non-codeword v′=v⊕e the following applies

s=H·v′=H·(v⊕e)=H·v⊕H·e=H·e#0.  (7)

The error syndrome s may be determined by the error vector e.

In order to determine the associated correct codeword from the erroneous non-codeword v′, those components v_(i)′ are to be inverted for which e_(j)=1 applies, so that e_(j) is the corresponding correction value determined by the error correction circuit.

For the considered, shortened BCH code, the error vector e is to be determined from the error syndrome s=(s₁, s₃, s₅, s_(P)) with the H matrix

$H = {\begin{pmatrix} H_{1} \\ H_{3} \\ H_{5} \\ P \end{pmatrix}.}$

The matrices H₁, H₃, H₅ are described by their columns:

H ₁=(h ₁ ¹ ,h ₂ ¹ , . . . ,h _(n) ¹)=α^(i) ¹ ,α^(i) ² , . . . ,α^(i) ^(n) ,  (8)

H ₃=(h ₁ ³ ,h ₂ ³ , . . . ,h _(n) ³)=α^(3(i) ¹ ⁾,α^(3(i) ² ⁾, . . . ,α^(3(i) ^(n) ⁾,  (9)

H ₅=(h ₁ ⁵ ,h ₂ ⁵ , . . . ,h _(n) ⁵)=α^(5(i) ¹ ⁾,α^(5(i) ² ⁾, . . . ,α^(5(i) ^(n) ⁾,  (10)

and

$\begin{matrix} {P = {\underset{\underset{n}{}}{\left( {1,1,\ldots \;,1} \right)}.}} & (11) \end{matrix}$

The exponents of α may be, as already mentioned, determined modulo 2^(m)−1, and the exponents i₁, i₂, . . . , i_(n) are all pairwise different. It is not necessary that for i_(j)=j for j=1, . . . , n.

If a 1-bit error is present in the j-th bit, the following applies

s ₁=α^(i) ^(j) ,  (12)

s ₃=α^(3(i) ^(j) ⁾,  (13)

s ₃=α^(3(i) ^(j) ⁾,  (14)

s _(P)=1  (15)

and s₁ ³=s₃, s₁ ⁵=s₅.

If a 2-bit error exists in bit positions j and l, the following applies

s ₁=α^(i) ^(j) ⊕α^(i) ^(l) ,  (16)

s ₃=α^(3(i) ^(j) ⁾⊕α^(3(i) ^(l) ⁾,  (17)

s ₅=α^(5(i) ^(j) ⁾⊕α^(5(i) ^(l) ⁾,  (18)

s _(p)=0  (19)

and s₁ ³≠s₃.

If a 3-bit error exists in bit positions j, l and k, the following applies

s ₁=α^(i) ^(j) ⊕α^(i) ^(l) ⊕α^(i) ^(k) ,  (20)

s ₃=α^(3(i) ^(j) ⁾⊕α^(3(i) ^(l) ⁾⊕α^(3(i) ^(k) ⁾,  (21)

s ₅=α^(5(i) ^(j) ⁾⊕α^(5(i) ^(l) ⁾⊕α^(5(i) ^(k) ⁾,  (22)

s _(p)=0  (23)

and s₁ ³≠s₃.

It would be desirable for the error correction circuit to efficiently determine the error positions of any 1-bit error or any 2-bit error or any 3-bit error from the error syndrome, i.e. from the syndrome components s₁, s₃ and s₅ of the BCH code and to perform a correction of the bits detected to be faulty in the determined bit positions of the data word.

In principle, this would be possible by an allocator, for example implemented as an ROM or as a combinational function which allocates the corresponding faulty bits which are to be corrected to the values of the error syndrome s=(s₁, s₃, s₅, s_(P)), i.e., to all possible values of the error syndrome s.

For reasons of cost and complexity, this may be practically impossible and hence not be implemented in actual systems due to the large word width of the syndrome s.

BCH codes may be capable of determining the position of faulty bits by zeroes or roots of corresponding locator polynomials. The coefficients of the locator polynomials may be determined by the components of the error syndrome. In error correction, first of all the number of errors may be determined. Depending on the number of errors a locator polynomial corresponding to the number of errors may be calculated whose zeroes determine the error position of the errors to be corrected.

Typically, different locator polynomials of different degrees may be used for different numbers of errors in order to determine the error positions to be corrected.

Thus, for 3-bit errors a locator polynomial of the third degree may exist which has three zeroes, wherein those three zeroes may determine the bit positions which have to be corrected in case of a 3-bit error. For 2-bit errors there may be a locator polynomial of the second degree which has two zeroes, wherein in case of a two-bit error those two zeroes may determine the bit positions which are corrected.

For 1-bit errors a further locator polynomial of the first degree may be provided which has one zero, wherein in case of a 1-bit error the zero may determine the bit position which is corrected.

In order to determine the occurred error positions, first of all the number of errors may be determined. Based on the determined number of errors, the locator polynomial to be used may then be determined and the zeroes of this locator polynomial may be determined. These zeroes correspond to the bit positions which are to be corrected.

In Okano, H. and Imai, H., “A construction method of high speed decoders using ROM's for Bose-Chadhuri-Hocquenghem and Reed Solomon Codes”, IEEE Trans. Comp. C36 (10) 1165-1175, 1987 it is described that the locator polynomial of the third degree in case of only two errors comprises one zero equal to 0 and two further zeroes which correspond to the positions of the two faulty bits to be corrected.

In case only one error exists the locator polynomial of the third degree does not allow to derive the position of the only one existing error from this polynomial of the third degree. Depending on whether a 1-bit error or whether a 2-bit or 3-bit error exists, a first degree polynomial or a third degree polynomial is to be used for determining the correction locations from the zeroes of those polynomials. In principle, the determination of the bits to be corrected may be performed so that first of all the number of errors occurred may be determined. Based on the number of errors occurred the corresponding locator polynomial may be selected. The zeroes of the selected locator polynomial may determine the bit positions to be corrected. In principle, the zeroes and thus the bit positions to be corrected may be tabulated depending on the coefficients of the selected locator polynomial of the corresponding degree and be determined by an allocator. The coefficients of the corresponding locator polynomial, as indicated, may depend on the subsyndromes s₁, s₃, s₅ of the error syndrome which each may have a word width m, so that the zeroes may depend on data of a word width 3·m. For realistic word widths it is practically not possible due to the large word widths of the coefficients to determine the zeroes of the known locator polynomials by an allocator.

In Okano, H. and Imai, H., “A construction method of high speed decoders using ROM's for Bose-Chadhuri-Hocquenghem and Reed Solomon Codes”, IEEE Trans. Comp. C36 (10) 1165-1175, 1987 the variables of the corresponding locator polynomial are first of all transformed so that the transformed polynomial only comprises one single coefficient which depends on the values of the subsyndromes s₁, s₃, s₅. This coefficient has a word width of m. The transformation is done so that the further coefficients of the transformed polynomial are equal to 1 or 0 and do not depend anymore on the subsyndromes s₁, s₃, s₅. The zeroes of the transformed polynomial may then be determined via an allocator from this one coefficient which is determined, for example by a ROM, from the subsyndromes s₁, s₃, s₅ and only comprises the word width m. The zeroes of the original locator polynomial may be determined by back-transformation and using a decoder.

For different numbers of errors, as mentioned above, different locator polynomials are used which are represented in Table 1 of Okano, H. and Imai, H., “A construction method of high speed decoders using ROM's for Bose-Chadhuri-Hocquenghem and Reed Solomon Codes”, IEEE Trans. Comp. C36 (10) 1165-1175, 1987.

In the error correction according to Okano, H. and Imai, H., “A construction method of high speed decoders using ROM's for Bose-Chadhuri-Hocquenghem and Reed Solomon Codes”, IEEE Trans. Comp. C36 (10) 1165-1175, 1987 it is for example disadvantageous that for the error correction relatively complicated transformation methods are required, that depending on the number of errors different polynomials are to be evaluated, and that the error correction is relatively slow.

By the disclosure, these disadvantages are to be at least partially reduced.

According to at least one aspect of the disclosure, for each bit v_(i)′ to be corrected a subcircuit SK_(i) for correcting the i-th bit is provided which is implemented so that may form a correction value Δv_(i) in parallel for each bit v_(i)′ to be corrected of the n-digit binary word v′=v₁′ . . . , v_(n)′. The error correction circuit SK_(i) may be configured so that it forms a correction value Δv_(i) from the intermediate values Zw₀, Zw₁, Zw₂, Zw₃ according to the following relation

Δv _(i)=

wherein

(z ₁ ^(i) ,z ₂ ^(i) , . . . ,z _(m) ^(i))=Zw ₃·α^(3j) ^(i) +Zw ₂·α^(2j) ^(i) +Zw ₁·α^(j) ^(i) +Zw ₀.

Here, for all bits to be corrected the same intermediate values Zw₀, Zw₁, Zw₂, Zw₃ are used so that the intermediate values only have to be provided once in the circuitry.

The intermediate values Zw₀, Zw₁, Zw₂, Zw₃ may be determined depending on the subsyndromes s₁, s₃, s₅ so that in case of a 1-bit error or a 2-bit error or a 3-bit error z^(i)=(z₁ ^(i), z₂ ^(i), . . . , z_(m) ^(i))=(0, 0, . . . , 0) when an error occurred in the bit position i, and z^(i)=(z₁ ^(i), z₂ ^(i), . . . , z_(m) ^(i))≠(0, 0, . . . , 0) when no error occurred in the bit position in the bit position i. It is typically not necessary to evaluate different equations in different error cases, that is, it typically is not necessary to evaluate different equation for 1-bit errors, 2-bit errors, and 3-bit errors.

In case no error is present and s₁=s₃=s₅=0 applies, for all bits to be corrected z^(i)=(z₁ ^(i), z₂ ^(i), . . . , z_(m) ^(i))≠(0, 0, . . . , 0) applies and thus Δv_(i)=0 applies, so that switching off the error correction circuit is not necessary in the error-free case.

The correction value Δv_(i) is equal to 1 if all components of z₁ ^(i), . . . , z_(m) ^(i) of z^(i) are equal to 0 or if z^(i) is equal to the zero-value in GF(2^(m)). The correction value Δv_(i) is equal to 0 if at least one of the components of z₁ ^(i), . . . , z_(m) ^(i) of z^(i) is equal to 1 or if z^(i) is not equal to the zero-value in GF(2^(m)).

Therefore the same correction values are obtained if all the intermediate values Zw₀, Zw₁, Zw₂, Zw₃ are multiplied by the same factor which for all values of the subsyndromes s₁, s₃ and s₅ is not equal to 0. Thereby the multiplication is the multiplication in the Galois field GF(2^(m)).

The determination of the intermediate values Zw₀, Zw₁, Zw₂, and Zw₃ may be performed by the corresponding subcircuit SZw₀, SZw₁, SZw₂, and SZw₃. The subcircuits SZw₀, SZw₁, SZw₂, and SZw₃ may be implemented so that they form the intermediate values Zw₀, Zw₁, Zw₂, and Zw₃ from the subsyndromes s₁, s₃, s₅. Further, a combinational circuit Vkn may exist for componentwise combining bits v_(i)′ of v′ to be corrected, said combinational circuit Vkn combining correction values Δv_(i) provided by the subcircuit SK_(i) with bits v_(i)′ to be corrected. It is configured so that it forms the corrected bits v_(i) ^(cor) from the bits v_(i)′ to be corrected and the provided correction values Δv_(i), wherein for example v_(i) ^(cor)=v_(i)′⊕Δv_(i) applies.

It is possible for the subcircuits SZw₀, SZw₁, SZw₂, and SZw₃ to be configured so that they provide, depending on the subsyndromes s₁, s₃, and s₅, the intermediate values,

$\begin{matrix} {{{Zw}_{0} = \left( {s_{1}^{3} + s_{3} + \frac{{s_{1}^{3} \cdot s_{3}} + {s_{1} \cdot s_{5}}}{s_{1}^{3} + s_{3} + {\alpha^{0} \cdot {N\left( {s_{1},s_{3}} \right)}}}} \right)},} & (24) \\ {{{Zw}_{1} = \frac{{s_{1}^{2} \cdot s_{3}} + s_{5}}{s_{1}^{3} + s_{3} + {\alpha^{0} \cdot {N\left( {s_{1},s_{3}} \right)}}}},} & (25) \\ {{{Zw}_{2} = s_{1}},} & (26) \\ {{Zw}_{3} = \alpha^{0}} & (27) \end{matrix}$ wherein

N(s ₀ ,s ₃)=

applies and

(r ₁ ,r ₂ , . . . ,r _(m))=s ₁ ³ +s ₃

applies.

The operation + designates the addition of the corresponding elements in the Galois field GF(2^(m)) which, in the vector representation, corresponds to the componentwise XOR-combination of the corresponding m-component binary vectors. The operation · refers to the operation of the multiplication in the Galois field GF(2^(m)).

It is likewise possible that the subcircuits SZw₀, SZw₁, SZw₂, SZw₃ are configured so that the subcircuits SZw₀, SZw₁, SZw₂, and SZw₃ provide, depending on the subsyndromes s₁, s₃, s₅, the intermediate values

Zw ₀ =+s ₁ ⁶ +s ₃ ² +s ₁ ³ +s ₃ +s ₁ ·s ₅,  (28)

Zw ₁ =s ₁ s ₃ +s ₅,  (29)

Zw ₂ =s ₁ ·[s ₁ ³ +s ₃+α⁰ ·N(s ₁ ,s ₃)]  (30)

Zw ₃ =s ₁ ³ +s ₃+α⁰ ·N(s ₁ ,s ₃)  (31)

wherein

N(s ₁ ,s ₃)=

applies and

(r ₁ ,r ₂ , . . . ,r _(m))=s ₁ ³ +s ₃

applies.

The operation + designates the addition of the corresponding elements in the Galois field GF(2^(m)) which, in the vector representation, corresponds to the componentwise XOR-combination of the corresponding m-component binary vectors. The operation · refers to the operation of the multiplication in the Galois field GF(2^(m)).

The intermediate values determined by equations (28) to (31) result from the intermediate values determined by equations (24) to (27) by multiplying the corresponding intermediate values determined by equations (24) to (27) with the following factor

[s ₁ ³ +s ₃+α⁰ ·N(s ₁ ,s ₃)].

The factor [s₁ ³+s₃+α⁰·N(s₁, s₃)] is always unequal (0, 0, . . . , 0). If s₁ ³+s₃=(0, 0, 0), then N(s₁, s₃)≠0, and if s₁ ³+s₃≠(0, 0, . . . , 0) then N(s₁, s₃)=0.

The following applies

[(s ₁ ³ +s ₃)+(α⁰ ·N(s ₁ ,s ₃))]=[(s ₁ ³ +s ₃)

(α⁰ ·N(s ₁ ,s ₃))],

wherein [(s₁ ³+s₃)+(α⁰·N(s₁, s₃))] describes the componentwise XOR-operation of (s₁ ³+s₃) and (α⁰·N(s₁, s₃)) in the vector representation, while [(s₁ ³+s₃)

(α⁰·N(s₁, s₃))] describes the componentwise OR operation of (s₁ ³+s₃) and (α⁰·N(s₁, s₃)) in the vector representation. This equality results from the fact that only when s₁ ³+s₃=(0, 0, . . . , 0) then N(s₁, s₃)=1 and thus α⁰·N(s₁, s₃)=α⁰=1, 0, . . . , 0≠(0, 0, . . . , 0) and that always when s₁ ³+s₃≠(0, 0, . . . , 0) then N(s₁, s₃)=0 and α⁰·N(s₁, s₃)=(0, 0, . . . , 0) applies. The values 1 and 1 of the components of the vectors to be combined do not occur for which the XOR operation 1⊕1=0 and 1

1=1 of the OR-operation would yield different results. In principle it is then of course also possible to combine some components with the operation XOR and the remaining components with the operation OR. For the description to remain as simple as possible, in the further description the XOR operation is used although of course also an OR operation may be used.

Independent of whether the intermediate values Zw₀, Zw₁, Zw₂, Zw₃ are determined according to equations (24) to (27) or according to equations (28) to (31), the same correction values of the bits to be corrected result. The intermediate values determined by equations in (24) to (27) and determined according to equations (28) to (31) are thus referred to as equal. It is clear from the context what intermediate values are used.

The disclosure is now to be explained with reference to embodiments. In FIG. 1, an inventive circuitry is schematically illustrated for correcting 1-bit, 2-bit and 3-bit errors. It comprises a syndrome generator Synd 11, a subcircuit SZw₀ 120 for determining an intermediate value Zw₀, a subcircuit SZw₁ 121 for determining an intermediate value Zw₁, a subcircuit SZw₂ 122 for determining an intermediate value Zw₂, and a subcircuit SZw₃ 123 for determining an intermediate value Zw₃. The circuitry further comprises, for i=1, . . . , n, n subcircuits SK_(i) 13 i for determining a correction value Δv_(i). The circuitry further comprises a combinational circuit Vkn 14 for componentwise combining the word v′=v₁′, . . . v_(n)′ to be corrected with the correction values Δv₁, . . . , Δv_(n) determined from the subcircuits SK₁ 131, . . . , SK_(n) 13 n. The syndrome generator Synd 11 forms the components s₁, s₃, s₅ of the error syndrome s=(s₁, s₃, s₅) for example by XOR operations from the data word v′=v₁′, . . . , v_(n)′ applied to its n-component binary input, according to the following relation

s ₁ =H ₁ ·v′,s ₃ =H ₃ ·v′,s ₅ =H ₅ ·v′,

which the syndrome generator Synd 11 may provide at its three m-bit wide binary outputs.

The matrices H₁, H₃, H₅ may be submatrices of an H matrix

$H = \begin{pmatrix} H_{1} \\ H_{3} \\ H_{5} \end{pmatrix}$

of a BCH code of the length n over the Galois field GF(2^(m)) for an error correction of 1-bit, 2-bit and 3-bit errors and with 3 m correction bits.

The first output of the syndrome generator Synd 11 which carries the subsyndrome s₁ may be connected to a first input each of the subcircuits SZw₀ 120, SZw₁ 121, SZw₂ 122, SZw₃ 123 for forming intermediate values Zw₀, Zw₁, Zw₂, Zw₃. The second output of the syndrome generator Synd 11 which carries the subsyndrome s₃ may be connected to a second input each of the subcircuits SZw₀ 120, SZw₁ 121, SZw₂ 122, SZw₃ 123. The third output of the syndrome generator Synd 11 which carries the subsyndrome s₅ may be connected to a third input each of the subcircuits SZw₀ 120, SZw₁ 121.

The m bit wide output of the subcircuit SZw₀ 120 which carries the intermediate value Zw₀ may be connected to a first input each of the subcircuit SK_(j) 13 j, for j=1, . . . . , n, for forming a correction value Δv_(j).

The m bit wide output of the subcircuit SZw₁ 121 which carries the intermediate value Zw₁ may be connected, for j=1, . . . , n, to a second input each of the subcircuit SK_(j) 13 j for forming the correction value Δv_(j).

The m bit wide output of the subcircuit SZw₂ 122 which carries the intermediate value Zw₂ may be connected, for j=1, n, to a third input each of the subcircuit SK_(j) 13 j for forming the correction value Δv_(j).

The m bit wide output of the subcircuit SZw₃ 123 which carries the intermediate value Zw₃ may be connected, for j=1, n, to a fourth input each of the subcircuit SK_(j) 13 j for forming the correction value Δv_(j).

For k=1, . . . , n the 1-bit wide output of the subcircuit SK_(k) 13 k may be connected to the 1-bit wide k-th input each of the first n binary inputs of the combinational circuit Vkn 14 at whose n further binary inputs the components v₁′, . . . , v_(n)′ of the data word to be corrected v′=v₁′, . . . , v_(n)′ are applied. The combinational circuit Vkn 14, for l=1, . . . , n, may output at its n binary outputs the corrected values v_(l) ^(cor)=v_(l)′⊕Δv_(l) which are for example implemented by componentwise XOR operations.

In other words, the circuitry for error correction may comprise a plurality of subcircuits for determining intermediate values Zw₀, Zw₁, Zw₂, Zw₃ to be used as coefficients in an error correction polynomial (z₁ ^(i), z₂ ^(i), . . . , z_(m) ^(i))=Zw₃·α^(3j) ^(i) +Zw₂·α^(2j) ^(i) +Zw₁·α^(j) ^(i) +Zw₀. The intermediate values Zw₀, Zw₁, Zw₂, Zw₃ may be determined depending on subsyndromes s₁, s₃, s₅ so that in case of a 1-bit, 2-bit, or 3-bit error z^(i)=(z₁ ^(i), z₂ ^(i), . . . , z_(m) ^(i))=(0, 0, . . . , 0) when an error occurred in the bit position i, and z^(i)=(z₁ ^(i), z₂ ^(i), . . . , z_(m) ^(i))≠(0, 0, . . . , 0) when no error occurred in the bit position i. A correction value Δv_(i)=

for the bit position i may then be determined on the basis of the error correction polynomial evaluated for the point α^(j) ^(i) . The determination of at least one of the intermediate values Zw₀, Zw₁, Zw₂, Zw₃ may comprise an algebraic term that is a function of at least two of the subsyndromes, said algebraic term being indicative of whether a 1-bit error exists in the possibly erroneous binary word v′.

In an embodiment, FIG. 2 shows one possible implementation of a subcircuit SK_(i) 2. It may comprise the constant multipliers 21, 22 and 23, the XOR circuit 24 and the NOR circuit 25.

The first m-bit wide input to which the intermediate value Zw₀ is applied may be fed to a first m-bit wide input of an XOR circuit 24. The second m-bit wide input which carries the intermediate signal Zw₁ may be connected to the input of the constant multiplier 21 whose m-bit wide output may be connected to a second m-bit wide input of the XOR circuit 24. In the constant multiplier 21 the input intermediate value Zw₁ may be multiplied by the constant factor α^(j) ^(i) . The multiplication may be a multiplication in the Galois field GF(2^(m)).

The concrete implementation of the constant multiplier 21 may be determined by multiplying both Zw₁ and also α^(j) ^(i) in their respective polynomial representation with each other modulo the modular polynomial of the Galois field GF(2^(m)) and by implementing the resulting linear equations by XOR operations.

The third m-bit wide input of subcircuit SK_(i) 2 which carries the intermediate signal Zw₂ may be connected to the input of the constant multiplier 22 whose m-bit wide output may be connected to a third m-bit wide input of the XOR circuit 24. In the constant multiplier, the input intermediate value Zw₂ may be multiplied by the constant factor α^(2j) ^(i) . The multiplication may again be a multiplication in the Galois field GF(2^(m)).

The concrete implementation of the constant multiplier 22 may be deter, mined by multiplying both Zw₂ and also α^(2·j) ^(i) in their respective polynomial representation with each other modulo the modular polynomial of the Galois field GF(2^(m)) and by implementing the resulting linear equations by XOR operations.

The fourth m-bit wide input which carries the intermediate signal Zw₃ may be connected to the input of the constant multiplier 23 whose m-bit wide output may be connected to a fourth m-bit wide input of the XOR circuit 24. In the constant multiplier, the input intermediate value Zw₃ may be multiplied by the constant factor α^(3j) ^(i) . The multiplication may be again a multiplication in the Galois field GF(2^(m)).

The concrete implementation of the constant multiplier 23 may be determined by multiplying both Zw₃ and also α^(3·j) ^(i) in their respective polynomial representation with each other modulo the modular polynomial of the Galois field GF(2^(m)) and by implementing the resulting linear equations by XOR operations.

The m-bit wide output of the XOR circuit 24 which carries the value z(i) may be connected to the m-bit wide input of an NOR circuit 25 which, at its 1-bit wide output, outputs the correction signal Δv_(i).

In case the intermediate value Zw₃ is constantly equal to α⁰, a particular implementation for the subcircuit SK_(i) may be provided.

As α⁰·α^(3·j) ^(i) =α^(3·j) ^(i) applies, functionally at the fourth m-bit wide input of the XOR circuit 24 the always constant value α^(3·j) ^(i) is applied. By a simple equivalent transformation, this constant value may thus be considered in the XOR sum which forms the value z(i) by simply inverting the components of z(i) whose corresponding components α^(3·j) ^(i) are equal to 1. This may be implemented by the corresponding output rows of the XOR circuit 24 being connected to the corresponding inputs of the NOR circuit 25 via inverters, while the output rows of the XOR circuit 24, whose corresponding components of α^(3·j) ^(i) are equal to 0, are directly connected to the corresponding inputs of the NOR circuit 25.

At the 1-bit wide output, the NOR circuit 25 may output the 1-bit wide correction signal Δv_(i).

In FIG. 3, one possible implementation of a combinational circuit Vkn 3 is illustrated. It comprises n first binary inputs at which the correction values Δv₁, . . . , Δv_(n) are input which are output by the corresponding subcircuits SK₁, . . . SK_(n). The components v₁′, . . . , v_(n)′ of the data word v′ to be corrected are applied at further n second binary inputs of the combinational circuit Vkn 3. The corrected values v₁ ^(cor), . . . , v_(n) ^(cor) of the corrected data word v^(cor)=v₁ ^(cor), . . . , v_(n) ^(cor) are output at the n binary outputs of the combinational circuit Vkn 3. For i=1, . . . , n the i-th input of the first n inputs of the circuit Vkn 3 which carries the correction signal Δv_(i) may be connected to a first input of an XOR gate 3 i whose second input may be connected to the i-th input of the n second inputs which carries the value v_(i)′ and whose output which carries the corrected signal v_(i) ^(cor) is led out as i-th output of the circuit Vkn 3.

It is clear that the combinational circuit may for example be changed equivalently without changing anything regarding the scope of the disclosure. It is thus for example possible to use inverted correction signals and connect them with XNOR gates instead of XOR gates. It is likewise for example possible to invertedly supply components of the disturbed data word v′ to the combinational circuit Vkn and to at least partially implement XNOR gates instead of XOR gates if one of their inputs is currently inverted.

In FIG. 4A a possible implementation of a subcircuit SZw₀ for determining an intermediate value Zw₀ is illustrated. The subcircuit SZw₀ of FIG. 4A is provided to form the intermediate value Zw₀ according to a following relation

${{Zw}_{0} = \left( {s_{1}^{3} + s_{3} + \frac{{s_{1}^{3} \cdot s_{3}} + {s_{1} \cdot s_{5}}}{s_{1}^{3} + s_{3} + {\alpha^{0} \cdot {N\left( {s_{1},s_{3}} \right)}}}} \right)},.$

At a first m-bit wide input of the subcircuit SZw₀ the syndrome component s₁ is applied, at a second m-bit wide input the syndrome component s₃ is applied, and at a third also m-bit wide input the syndrome component s₅ is applied. At the orbit wide output the intermediate value Zw₀ is output. The first input carrying the syndrome component s₁ is connected to an m-bit wide input of a squarer 41 and to a first input of a Galois field multiplier 48. The second m-bit wide input which carries the syndrome component s₃ is connected to a first input of a Galois field multiplier 42 whose second m-bit wide input is connected to the output of the squarer 41 which carries the value s₁ ². The third m-bit wide input which carries the syndrome component s₅ is connected to a first input of an XOR circuit 43 whose second m-bit wide input is connected to the output of the Galois field multiplier 42 which carries the value s₁ ²·s₃.

The syndrome components s₁, s₃ and s₅ may be provided at the outputs of the syndrome generator Synd 11 in FIG. 1. The XOR circuit 43 may implement a componentwise XOR operation. The m-bitwise output of the XOR circuit 43 connected to a first input of a Galois field multiplier 45 carries the value s₁ ²·s₃+s₅. The second m-bitwise input of the Galois field multiplier 45 may also be connected to the first input of SZw₀ which carries the syndrome component s₁ and which may also be connected to the input of the squarer 41 and to the first input of the Galois field multiplier 48. The output of the Galois field multiplier 45 which carries the value s₁(s₁ ²·t s₃+s₅) may be connected to a first input of a Galois field multiplier 46.

The output of the Galois field multiplier 48 which carries the signal S1 may be connected to the first input of an XOR circuit 49 whose second m-bit wide input may be connected to the second input of the subcircuit SZw₀ carrying the syndrome component s₃ wherein this input may also be connected to the first input of the Galois field multiplier 42. Its output which carries the value s₁ ³+s₃ may be connected to the m-bit wide input of an NOR circuit 410 with a binary output and connected to a first m-bit wide input of an XOR circuit 47.

The 1-bit wide output of the NOR circuit 410 may carry the value 1 exactly when s₁ ³+s₃=0 or when s₁ ³=s₃ and thus also when s₁=s₃=0 applies and thus also α⁰·N(s₁, s₃)=(1, 0, . . . , 0) applies. Note that α⁰=(1, 0, 0, . . . , 0) with m bits (see FIG. 4D). The output of the NOR circuit 410 may be connected to a first input of an XOR gate 412 having two binary inputs and one binary output. At the second input of the XOR gate 412 the most significant bit of the value s₁ ³+s₃ may be applied. This most significant bit may be inverted exactly when s₁ ³+s₃=0. In this case it may be set to the value 1. In any other cases it may remain unchanged. The value output by the XOR gate 412, as a most significant bit MSB forms, together with the m−1 least significant bits of the output line of the XOR circuit 49, the value s₁ ³+s₃+α⁰·N(s₁, s₃) which is applied to the m-bit wide input of an inverter 413 for forming the value which is inverse in the Galois field and which, at its output which may be connected to the second m-bit wide input of the Galois field multiplier 46, may output the value [s₁ ³+s₃+α⁰·N(s₁, s₃)]⁻¹. In one embodiment, the XOR gate 412 may also be replaced by an OR gate having two binary inputs and one binary output, because as described above a connection of the two input values 1 and 1 does not have to be implemented and the OR function and the XOR function are equal for the input values [0, 0], [1, 0], [0, 1]. At its output which may be connected to a second input of the XOR circuit 47 the Galois field multiplier 46 may output the value

$\frac{{s_{1}^{2} \cdot s_{3}} + s_{5}}{s_{1}^{3} + s_{3} + {\alpha^{0} \cdot {N\left( {s_{1},s_{3}} \right)}}}.$

This value may be applied to the second input of the XOR circuit 47 at whose first m-bit wide input the value s₁ ³+s₃ is applied. At its output it may output the intermediate value Zw₀ with

${{Zw}_{0} = \left( {s_{1}^{3} + s_{3} + \frac{{s_{1}^{3} \cdot s_{3}} + {s_{1} \cdot s_{5}}}{s_{1}^{3} + s_{3} + {\alpha^{0} \cdot {N\left( {s_{1},s_{3}} \right)}}}} \right)},$

The subcircuit 413 for inverting the input value in the Galois field may for example be implemented via a table with m inputs and m outputs which may be implemented as an ROM or as a combinational function.

Implementing squarers, Galois field multipliers and inverters is known to a person skilled in the art. In addition, the squarer 41 may either be also implemented as a table with m inputs and m outputs. It is also possible to implement this circuit as a linear circuit. All elements of the considered Galois field in their polynomial representation may be represented as polynomials of the (m−1)-th degree and the squared polynomials may again be determined modulo the modular polynomial as (m−1)-th degree polynomials of the Galois field, whereupon the linear representation directly follows which is still to be described for a concrete embodiment.

Accordingly, the concrete implementations for the Galois field multiplier 42, 45, 46 and 48 may also be derived by multiplying the corresponding polynomials of the operands modulo the modular polynomial which is known to a person skilled in the art and is apart from that still to be described for a concrete Galois field.

In FIG. 4B, one possible implementation of a subcircuit SZw₁ for implementing an intermediate value Zw₁ is schematically illustrated. The subcircuit SZw₁ of FIG. 4B is provided to form the intermediate value Zw₁ according to the following relation

${{Zw}_{1} = \left( \frac{{s_{1}^{2} \cdot s_{3}} + s_{5}}{s_{1}^{3} + s_{3} + {\alpha^{0} \cdot {N\left( {s_{1},s_{3}} \right)}}} \right)},.$

At a first m-bit wide input of the subcircuit SZw₁ the syndrome component s₁ may be applied, at a second m-bit wide input the syndrome component s₃ may be applied and at a third also m-bit wide input the syndrome component s₅ may be applied. At the m-bit wide output the intermediate value Zw₁ may be output. The first input carrying the syndrome component s₁ may be connected to an m-bit wide input of a squarer 414 and to a first input of a Galois field multiplier 418. The second m-bit wide input carrying the syndrome component s₃ may be connected to a first input of a Galois field multiplier 415 whose second m-bit wide input may be connected to the output of the squarer 414 which may carry the value s₁ ². The output of the squarer 414 may be additionally connected to the second input of the Galois field multiplier 418.

The output of the Galois field multiplier 415 may be connected to a first m-bit wide input of the XOR circuit 416 whose second m-bit wide input may be connected to the third m-bit wide circuit input of the circuit SZw₁ which may carry the syndrome component s₅. The second m-bit wide input of the circuit SZw₁ which may carry the syndrome component s₃ may be connected to a first input of an XOR circuit 419 whose second m-bit wide input may be connected to the output of the Galois field multiplier 418 which may carry the value s₁ ³.

The syndrome components s₁, s₃ and s₅ may be provided at the outputs of the syndrome generator Synd 11 in FIG. 1. The XOR circuit 416 may implement a componentwise XOR operation. The m-bitwise output of the XOR circuit 416 which may be connected to a first input of a Galois field multiplier 417 may carry the value

s ₁ ² ·s ₃ +s ₅.

The m-bit wide output of the XOR circuit 419 which may carry the value s₁ ³+s₃ may be connected to the m-bit wide input of an NOR circuit 420 having a binary output.

The 1-bit wide output of the NOR circuit 420 may carry a “1” exactly when s₁ ³+s₃=0. This is typically the case when s₁ ³=s₃ or when s₁=s₃=0 applies. In this case α⁰·N(s₁, s₃)=(1, 0, . . . , 0) applies. The output of the NOR circuit 420 may be connected to a first input of an OR gate 421 having two binary inputs and one binary output. The most significant bit of the value s₁ ³+s₃, which is output by the XOR circuit 419, may be applied to the second input of the OR gate 421. The value output by the OR gate 421, being the most significant bit, at the same time with the m−1 least significant bits of the m bits output by the XOR circuit 419, are applied to the m-bit wide input of an inverter 422. At the input of the inverter 422 the input value [s₁ ³+s₃+α⁰·N(s₁, s₃)] may be applied. The inverter 422 may form the value [s₁ ³+s₃+α⁰·N(s₁, s₃)]⁻¹ which, in the Galois field, may be the inverse of the input value applied to its input and outputs said inverse at its output. The output of the inverter 411 may be connected to the second m-bit wide input of the Galois field multiplier 417.

At its output the Galois field multiplier 417 outputs the intermediate value

${Zw}_{1} = {\frac{{s_{1}^{2} \cdot s_{3}} + s_{5}}{s_{1}^{3} + s_{3} + {\alpha^{0} \cdot {N\left( {s_{1},s_{3}} \right)}}}.}$

In FIG. 4B, the most significant bit of the input value [s₁ ³+s₃+α⁰·N(s₁, s₃)] applied to the input of the inverter 422 may be obtained from the value s₁ ³+s₃ output by the XOR circuit 419 using the NOR circuit 420 and the OR gate 421.

In contrast to that, in FIG. 4A the most significant bit of the input value [s₁ ³+s₃+α⁰·N(s₁, s₃)] applied to the input of the inverter 413 may be obtained from the value s₁ ³+s₃ output by the XOR circuit 49 using the NOR circuit 410 and the XOR gate 412.

At both inputs of the XOR gate 412 and the OR gate 421 the pair (1, 1) of input values is typically never applied so that the values output by an OR gate are not different from values output by an XOR gate.

FIG. 4C shows one possible implementation of a subcircuit SZw₂ for implementing the intermediate value Zw₂=s₁. It may simply comprise an m-component line 423 connected to the output of the syndrome generator Synd 11 which outputs the syndrome component s₁.

FIG. 4D shows one possible implementation of a subcircuit SZw₃ for implementing the intermediate value

${Zw}_{3} = {\alpha^{0} = {\underset{\underset{m}{}}{\left( {1,0,\cdots \mspace{14mu},0} \right)}.}}$

It may comprise an m-component line whose most significant bit is constantly at the value “1” and whose m−1 least significant components are constantly at the value “0”.

In FIG. 5, one embodiment for a joint implementation of the subcircuits SZw₀, SZw₁, SZw₂ and SZw₃ for generating the intermediate values Zw₀, Zw₁, Zw₂ and Zw₃ is schematically illustrated which determine the intermediate values according to the following relations

Zw ₀ =s ₁ ⁶ +s ₃ ² +s ₁ ³ ·s ₃ +s ₁ ·s ₅,

Zw ₁ =s ₁ ² s ₃ +s ₅,

Zw ₂ =s ₁ ·[s ₁ ³ +s ₃+α⁰ ·N(s ₁ ,s ₃)]Zw ₃ =s ₁ ³ +s ₃+α⁰ ·N(s ₁ ,s ₃).

The subsyndrome s₁ is applied to a first m-bit wide input which may be connected to both, an input of a squarer 51 and also a first input of a Galois field multiplier 56. The output of the squarer 51 is connected both to a first m-bit wide input of a Galois field multiplier 52 and also to the second m-bit wide input of the Galois field multiplier 56. The subsyndrome s₃ may be applied to the second m-bit wide input of the Galois field multiplier 52. The output of this Galois field multiplier, which carries the value s₁ ³·s₃, may be connected to a first m-bit wide input of an XOR circuit 53 at whose second also m-bit wide input the value s₅ of the subsyndrome s₅ may be applied. The XOR circuit 53 may perform the componentwise-XOR operation of the m-bit operands applied to its two inputs, so that it may output the value s₁ ²s₃+s₅ at its output. This output may be connected to a first m-bit wide input of a Galois field multiplier 54 and at the same time to the circuit output which may carry the intermediate value Zw₁.

The value of the subsyndrome s₁ may be applied to the second m-bit wide input of the Galois field multiplier 54. The output of this Galois field multiplier 54, which carries the value s₁ ³s₃+s₁s₅ may be connected to a first m-bit wide input of an XOR circuit 55.

The output of the Galois field multiplier 56 which carries the value s₁ ³ may be connected to a first m-bit wide input of an XOR circuit 57 at whose second m-bit wide input the value s₃ may be applied. The m-bit wide output of this XOR circuit 57 which carries the value s₁ ³+s₃ may be connected to a squarer 58 and into an NOR circuit 59. Apart from that, the most significant bit MSB of the output of the XOR circuit 57 may be connected to a first input of an XOR gate 510 to whose second input the output of the NOR circuit 59 may be connected. The m−1 least significant bits of the output of the XOR circuit 57 and the bit output at the output of the XOR gate 510 may be applied to a first m-bit wide input of a Galois field multiplier 511 at whose second m-bit wide input the value of the subsyndrome s₁ may be input and whose output may be connected to the circuit output which may output the intermediate value Zw₂.

The output lines of the output of the XOR circuit 57 carrying the m−1 least significant bits and the output of the XOR gate 510 may be connected to the circuit output which outputs the intermediate value Zw₃.

The output of the squarer 58 which carries the value (s₁ ³+s₃)²=s₁ ⁶+s₃ ² may be connected to the m-bit wide second input of the XOR circuit 55 whose output may be connected to the circuit output which carries the intermediate value Zw₀.

Unexpectedly, the expression s₁ ³+s₃+α⁰·N(s₁, s₃) may easily be determined on the basis of the expression s₁ ³+s₃, using the NOR circuit 59 and the XOR gate 510, as it is explained in the following.

s₁ ³+s₃α⁰·N(s₁, s₃) is equal to s₁ ³+s₃ for s₁ ³+s₃≠0 and equal to

$\alpha^{0} = \underset{\underset{m}{}}{1,0,\cdots \mspace{14mu},0^{T}}$

for s₁ ³+s₃=0.

If s₁ ³+s₃≠0, then the NOR circuit 59 outputs the value “0” at its 1-bit wide output which may be applied to the second input of the XOR gate 510. The most significant bit MSB of s₁ ³+s₃ may be input into the first input of the XOR gate 510 and output at the output of this gate unchanged due to the “0” applied to the second input. The unchanged most significant bit and the m−1 least significant bits of s₁ ³+s₃ form the value s₁ ³+s₃ which may be applied both to the first input of the Galois field multiplier and also to the circuit output which outputs the value Zw₃.

If s₁ ³+s₃=0 applies, the NOR circuit 59 outputs the value 1 which may be applied to the second input of the XOR gate 510. The most significant bit (MSB) of s₁ ³+s₃ is equal to 0, just like the further m−1 bits. At the output of the XOR gate 510 thus the value “1” may be output so that on the m input lines of the first input of the Galois field multiplier 511, just like at the circuit output which carries the value Zw₃, the value

$\alpha^{0} = \underset{\underset{m}{}}{\left( {1,0,\cdots \mspace{14mu},0} \right)^{T}}$

is output.

It is obvious to a person skilled in the art that the circuit may be changed equivalently. It is for example possible to replace the XOR gate 510 by an OR gate without changing the function of the circuit. It is likewise for example possible, instead of the Galois field multiplier 56 and the upstream squarer 51, to use a subcircuit which directly forms the third power s₁ ³ from s₁. It is likewise possible, for example instead of the given signals, to use partially inverted signals and to implement the circuit with different gate libraries.

The subcircuits SZw₀, SZw₁, SZw₂ and SZw₃ in FIG. 5 may be partially implemented in a joint manner, which is characterized by the fact that circuit parts may be simultaneously used by several subcircuits and which may be advantageous with respect to the circuit expenditure or complexity.

The subcircuit SZw₀ may here comprise the circuit parts 51, 52, 53, 54, 55, 56, 57, 58.

The subcircuit SZw₁ may comprise the circuit parts 51, 52, 53 which are all also used for implementing the subcircuit SZw₀.

The subcircuit SZw₂ may comprise the subcircuits 51, 56, 57, 59, 510, 511, and the subcircuit SZw₃ may comprise the circuit parts 51, 56, 57, 59, 510, which are all also used for implementing the subcircuit SZw₂.

For a better understanding of the disclosure now circuit parts which may be used for implementing the disclosure are still to be explained for one concrete embodiment.

In this respect, in one embodiment m=5 is selected so that the underlying Galois field is GF(2⁵)=GF(32).

The elements of the Galois field GF(2⁵)=GF(32) are illustrated in Table 1 in their different forms. The modular polynomial of the considered Galois field is the polynomial m(x)=1+x²+x⁵.

TABLE 1 Elements of the GF(2⁵) generated by the primitive polynomial p(x) = 1 + x² + x⁵ Polynomial Power Representation Representation Tuple Representation 0 0 (00000) α⁰ 1 (10000) α¹ x¹ (01000) α² x² (00100) α³ x³ (00010) α⁴ x⁴ (00001) α⁵ 1 + x² (10100) α⁶ x¹ + x³ (01010) α⁷ x² + x⁴ (00101) α⁸ 1 + x² + x³ (10110) α⁹ x¹ + x³ + x⁴ (01011) α¹⁰ 1 + x⁴ (10001) α¹¹ 1 + x¹ + x² (11100) α¹² x¹ + x² + x³ (01110) α¹³ x² + x³ + x⁴ (00111) α¹⁴ 1 + x² + x³ + x⁴ (10111) α¹⁵ 1 + x¹ + x² + x³ + x⁴ (11111) α¹⁶ 1 + x¹ + x³ + x⁴ (11011) α¹⁷ 1 + x¹ + x⁴ (11001) α¹⁸ 1 + x¹ (11000) α¹⁹ x¹ + x² (01100) α²⁰ x² + x³ (00110) α²¹ x³ + x⁴ (00011) α²² 1 + x² + x⁴ (10101) α²³ 1 + x¹ + x² + x³ (11110) α²⁴ x¹ + x² + x³ + x⁴ (01111) α²⁵ 1 + x³ + x⁴ (10011) α²⁶ 1 + x¹ + x² + x⁴ (11101) α²⁷ 1 + x¹ + x³ (11010) α²⁸ x¹ + x² + x⁴ (01101) α²⁹ 1 + x³ (10010) α³⁰ x¹ + x⁴ (01001)

The 31 elements of the Galois field are represented in the first column of Table 1 in lines 2 to 32 for i=0, . . . , 30 in their power representation α^(i), which may be also called exponential representation The element 0 in the first row of the first column has no power representation. α here is a primitive element of the Galois field.

In the second column the 32 elements of the Galois field are given in their polynomial representation for the modular polynomial m(x)=1+x²+x⁵. In the third column the tuple or vector representation is given. The five components of the vector representation correspond to the five coefficients of the powers x⁰, x¹, x², x³, x⁴ of the polynomial representation. Thus, for example the vector representation 00101 corresponds to the polynomial x²+x⁴ in the 9^(th) row of Table 1.

The corresponding polynomial representation results from the power representation α^(j) by determining [x^(j) modulo(1+x²+x⁵)].

Thus, the polynomial representation of α⁵ is equal 1+x², as the following applies

x ⁵ modulo(1+x ² +x ⁵)=1+x ².

Accordingly, the polynomial representation of α⁶ is equal to

x ⁶ modulo(1+x ² +x ⁵)=x+x ³,

the polynomial representation of α⁷ is equal to

x ⁷ modulo(1+x ² +x ⁵)=x ² +x ⁴

and the polynomial representation of α⁸ is equal to

x ⁸ modulo(1+x ² +x ⁵)=1+x ² +x ³,

as it is given in rows 7, 8, 9 and 10 of Table 1.

The multiplication of two elements of the Galois field may be done in the exponential representation or in the polynomial representation.

If two elements of the Galois field GF(2^(m))=GF(2⁵) are given in the exponential representation α^(i) and α^(j), then their product is

α^(i)·α^(j)=α^(k) with k=i+j modulo(2^(m)−1)=i+j modulo(31).

If the elements of the Galois field to be multiplied exist in their vector representation or in their polynomial representation, their multiplication may be performed by a Galois field multiplier. Although Galois field multipliers are known to a person skilled in the art, for a better understanding of the disclosure the multiplication of two elements in their polynomial representation is to be described for one application example.

In order to multiply two elements with each other the elements of the Galois field GF(2^(m))=GF(2⁵) are given in their polynomial representation, then the polynomials are to be multiplied directly by each other as usual, and the result is to be determined modulo the modular polynomial.

If, for example, the polynomials 1+x²+x³ and x+x³ are given, their direct multiplication results in

(1+x ² +x ³)(x+x ³)=x+x ⁴ +x ⁵ +x ⁶

and because of x⁵=1+x² modulo(1+x²+x⁵) and x=x+x³ modulo(1+x²+x⁵), then

x+x ⁴ +x ⁵ +x ⁶ =x+x ⁴+1+x ² +x+x ³=1+x ² +x ³ +x ⁴

applies so that for their multiplication in the Galois field the following applies:

(1+x ² +x ³)(x+x ³)=1+x ² +x ³ +x ⁴.

Now the case is described that a first element a(x) with

a(x)=a ₄ x ⁴ +a ₃ x ³ +a ₂ x ² +a ₁ x+a ₀

and a second element b(x) with

b(x)=b ₄ x ⁴ +b ₃ x ³ +b ₂ x ²+b₁ x+b ₀

are multiplied (in the Galois field GF(2⁵) with the modular polynomial m(x)=x⁶+x²+1).

By directly multiplying the polynomials a(x) and b(x) an 8^(th) degree polynomial results and by determining x⁵, x⁶, x⁷ and x⁸ modulo(1+x²+x⁵) to be 1+x², x+x³, x²+x⁴ and 1+x²+x³, respectively, it may be directly calculated that a fourth degree polynomial results and that the following applies

$\begin{matrix} {{{c_{4}x^{4}} + {c_{3}x^{3}} + {c_{2}x^{2}} + {c_{1}x^{1}} + c_{0}} = {{{{a(x)} \cdot {b(x)}}{{{mod}m}(x)}}=={{\left( {{a_{0}b_{4}} + {a_{1}b_{3}} + {a_{2}b_{2}} + {a_{3}b_{1}} + {a_{3}b_{4}} + {a_{4}b_{0}} + {a_{4}b_{3}}} \right)x^{4}} + {a_{0}b_{3}} + {a_{1}b_{2}} + {a_{2}b_{1}} + {a_{2}b_{4}} + {\left( {{a_{0}b_{3}} + {a_{1}b_{2}} + {a_{2}b_{1}} + {a_{2}b_{4}} + {a_{3}b_{0}} + {a_{3}b_{3}} + {a_{4}b_{2}} + {a_{4}b_{4}}} \right)x^{3}} + {\left( {{a_{0}b_{2}} + {a_{1}b_{1}} + {a_{1}b_{4}} + {a_{2}b_{0}a_{2}b_{3}} + {a_{3}b_{2}} + {a_{3}b_{4}} + {a_{4}b_{1}} + {a_{4}b_{3}} + {a_{4}b_{4}}} \right)x^{2}} + {\left( {{a_{0}b_{1}} + {a_{1}b_{0}} + {a_{2}b_{4}} + {a_{3}b_{3}} + {a_{4}b_{2}}} \right)x^{1}} + \left( {{a_{0}b_{0}} + {a_{1}b_{4}} + {a_{2}b_{3}} + {a_{3}b_{2}} + {a_{4}b_{1}} + {a_{4}b_{4}}} \right)}}} & \; \end{matrix}$

This relationship is implemented by a Galois field multiplier with five first binary inputs, five second binary inputs and five binary outputs which is to be described in the following.

The binary values a₀, a₁, a₂, a₃, a₄ are applied to the first five inputs of the Galois field multiplier. The binary values b₀, b₁, b₂, b₃, b₄ are applied and to the second five inputs. The resulting values c₀, c₁, c₂, c₃, c₄ with

(a ₀ b ₀ +a ₁ b ₄ +a ₂ b ₃ +a ₃ b ₂ +a ₄ b ₁ +a ₄ b ₄)=c ₀,  (32)

(a ₀ b ₁ +a ₁ b ₀ +a ₂ b ₄ +a ₃ b ₃ +a ₄ b ₂)=c ₁  (33)

(a ₀ b ₂ +a ₁ b ₁ +a ₁ b ₄ +a ₂ b ₀ +a ₂ b ₃ +a ₃ b ₂ +a ₃ b ₄ +a ₄ b ₁ +a ₄ b ₃ +a ₄ b ₄)=c ₂  (34)

(a ₀ b ₃ +a ₁ b ₂ +a ₂ b ₁ +a ₂ b ₄ +a ₃ b ₀ +a ₃ b ₃ +a ₄ b ₂ +a ₄ b ₄)=c ₃  (35)

(a ₀ b ₄ +a ₁ b ₃ +a ₂ b ₂ +a ₃ b ₁ +a ₃ b ₄ +a ₄ b ₀ +a ₄ b ₃)=c ₄  (36)

are output at the five binary outputs. Here, “+” designates the addition modulo 2 or the XOR operation.

The implementation of equations 32 to 36 and thus the implementation of a Galois field multiplier, for example by AND and XOR gates, is no difficulty for a person skilled in the art and is thus not to be explained any further. Conventionally, a person skilled in the art may use a synthesis tool.

If an element of the Galois field is squared, it may be multiplied by itself. If in the polynomial representation an element is given as the polynomial a(x)=a₀+a₁x¹+a₂x²+a₃x³+a₄x⁴ the following applies,

(a(x))² mod m(x)=[a ₀ +a ₁ x ² +a ₂ x ⁴ +a ₃ x ⁶ +a ₄ x ⁸] mod(1+x ² +x ⁵)=(a ₂)x ⁴+(a ₃ +a ₄)x ³+(a ₁ +a ₄)x ² +a ₃ x ¹+(a ₀ +a ₄).

Squaring an element in the Galois field GF(2⁵) may accordingly be implemented with a squarer having five binary inputs and five binary outputs. At its five binary inputs the binary values a₀, a₁, a₂, a₃, a₄ may be input and at its 5 binary outputs the binary values d₀, d₁, d₂, d₃, d₄ may be output, wherein the following applies

a ₀ +a ₄ =d ₀  (37)

a ₃ =d ₁  (38)

a ₁ +a ₄ =d ₂  (39)

a ₃ +a ₄ =d ₃  (40)

a ₂ =d ₄  (41)

and “+” again designates the addition modulo 2 or the XOR operation.

For implementing a squarer in the Galois field GF(2⁵) with the modular polynomial m(x)=1+x²+x⁵ then only linear equations 37 to 41 are to be implemented, which is no difficulty for a person skilled in the art and is not to be described any further.

It is to be described again with reference to the example of the Galois field GF(2⁵) how the third power of an element may be determined which is described in its polynomial representation.

If the third power (a(x))³ of a polynomial a(x)=a₀+a₁x¹+a₂x²+a₃x³+a₄x⁴ is determined modulo the modular polynomial m(x)=1+x²+x⁵, the following applies

(a(x))³modm(x) = (a₀a₂ + a₀a₄ + a₁a₂ + a₁a₃ + a₁a₄ + a₂a₃ + a₂a₄ + a₃ + a₃a₄)x⁴ + (a₀a₄ + a₁ + a₂ + a₂a₃ + a₂a₄ + a₃ + a₄)x³ + (a₀a₁ + a₀a₂ + a₀a₄ + a₁a₂ + a₂a₄ + a₃a₄ + a₄)x² + (a₀a₁ + a₀a₃ + a₂ + a₃ + a₃a₄ + a₄)x¹ + (a₀ + a₀a₄ + a₁a₂ + a₁a₃ + a₂a₃)

Forming the third power of an element in the Galois field GF(2⁵) may be implemented accordingly with a third power generator having five binary inputs and five binary outputs. At its five binary inputs the binary values a₀, a₁, a₂, a₃, a₄ are input and at its five binary outputs the five binary values f₀, f₁, f₂, f₃, f₄ are output, wherein

f ₀ =a ₀ +a ₀ a ₄ +a ₁ a ₂ +a ₁ a ₃ +a ₂ a ₃  (42)

f ₁ =a ₀ a ₁ +a ₀ a ₃ +a ₂ +a ₃ +a ₃ a ₄ +a ₄  (43)

f ₂ =a ₀ a ₁ +a ₀ a ₂ +a ₀ a ₄ +a ₁ a ₂ +a ₂ a ₄ +a ₃ a ₄ +a ₄  (44)

f ₃ =a ₀ a ₄ +a ₁ +a ₂ +a ₂ a ₃ +a ₂ a ₄ +a ₃ +a ₄  (45)

f ₄ =a ₀ a ₂ +a ₀ a ₄ +a ₁ a ₂ +a ₁ a ₃ +a ₁ a ₄ +a ₂ a ₃ +a ₂ a ₄ +a ₃ +a ₃ a ₄  (46)

For implementing a third power generator, here in the Galois field GF(2⁵) with the modular polynomial m(x)=1+x²+x⁵, only equations 42 to 46 are to be implemented which is no difficulty for a person skilled in the art and which is not to be described any further.

Alternatively, a person skilled in the art will also consider to implement a third power generator from a squarer and a downstream Galois field multiplier.

In special implementations of the disclosure an inverter may be used. With reference to the example of the Galois field GF(2⁵), Table 2 schematically illustrates how the functioning of a corresponding inverter may be represented as a table of values.

TABLE 2 Table of values of an inverter for GF(2⁵) α^(i) (α^(i))⁻¹ Power Tuple Power Tuple Representation Representation Representation Representation α⁰ (10000) α⁰ (10000) α¹ (01000) α³⁰ (01001) α² (00100) α²⁹ (10010) α³ (00010) α²⁸ (01101) α⁴ (00001) α²⁷ (11010) α⁵ (10100) α²⁶ (11101) α⁶ (01010) α²⁵ (10011) α⁷ (00101) α²⁴ (01111) α⁸ (10110) α²³ (11110) α⁹ (01011) α²² (10101) α¹⁰ (10001) α²¹ (00011) α¹¹ (11100) α²⁰ (00110) α¹² (01110) α¹⁹ (01100) α¹³ (00111) α¹⁸ (11000) α¹⁴ (10111) α¹⁷ (11001) α¹⁵ (11111) α¹⁶ (11011) α¹⁶ (11011) α¹⁵ (11111) α¹⁷ (11001) α¹⁴ (10111) α¹⁸ (11000) α¹³ (00111) α¹⁹ (01100) α¹² (01110) α²⁰ (00110) α¹¹ (11100) α²¹ (00011) α¹⁰ (10001) α²² (10101) α⁹ (01011) α²³ (11110) α⁸ (10110) α²⁴ (01111) α⁷ (00101) α²⁵ (10011) α⁶ (01010) α²⁶ (11101) α⁵ (10100) α²⁷ (11010) α⁴ (00001) α²⁸ (01101) α³ (00010) α²⁹ (10010) α² (00100) α³⁰ (01001) α¹ (01000)

In the first column of Table 2 all 2⁵−1 values α^(i), i=0, . . . , 30 of the Galois field GF(2⁵) are entered in the exponential representation. The O-element 0 of the Galois field is not entered. It has no inverse element.

The second column contains the element illustrated in the first column in its tuple representation as a binary 5-tuple. This representation is simply read from Table 1. The third column of Table 2 contains the inverse element of the element illustrated in the first column in its exponential representation and the fourth column contains the inverse element represented in the third column in its tuple representation as a binary 5-tuple. This representation is simply read off with the help of Table 1.

If the element represented in the first column is multiplied with the corresponding inverse element of the third column, α⁰=1 results. For the sum of the exponents of an element and the associated inverse element it applies that it is modulo 31 equal 0. The exponent of the inverse element only has to be determined so that the sum of the exponent of the element of the first column and the element of the third column is equal 31 or (in the first row) equal 0.

If, for example, the 10^(th) row of Table 2 is considered, the inverse element α²² is associated with the element α⁹, and for the corresponding exponents 22+9=31 applies. If, for example, the first row of Table 2 is considered, the inverse element α⁰ is associated with the element α⁰ and for the corresponding exponents the following applies 0+0=0. If the input value of the inverter just like the output value is given as a 5-tuple in the respective tuple representation, a table of values for the binary implementation of the inverter is obtained by allocating the corresponding tuples of the fourth column to the 5-tuples of the second column. Here, the 5-tuples of the second column are the input values and the tuples of the fourth column are the output values of the inverter. Thus, for example, the output tuple 10101 is associated with the input tuple 01011 (in row 10).

The inverter may then be simply an implementation of the table of values determined this way. As the implementation of a table of values as a combinational circuit is not difficult for a person skilled in the art, this implementation is not to be described any further.

For one embodiment, now the implementation of a constant multiplier is to be described as it may be used in a subcircuit SK_(i) 13 i of FIG. 2. As an example, the constant multiplier 22 for j_(i)=20 is considered which multiplies the intermediate value Zw₂ with α^(2j) ^(i) . As 2 j_(i)=2 20=40=9 modulo 31 applies, the intermediate value Zw₂ is multiplied by α⁹.

In the polynomial representation the intermediate value Zw₂ may be represented as follows

Zw ₂(x)=Zw ₂ x ⁴ +Zw ₂ ³ x ³+Zw₂ ² x ² +Zw ₂ ¹ x+Zw ₂ ⁰.

In the polynomial representation, α⁹ according to Table 1 has the following representation

α⁹(x)=x ⁴ +x ³ +x,

and the modular polynomial m(x) of the Galois field GF(2⁵) is

m(x)=x ⁵ +x ²+1.

It is possible to first of all directly multiply the fourth degree polynomials Zw₂(x) and α⁹(x). Then, an eighth degree polynomial is obtained. If then the powers x⁵, x⁶, x⁷, x⁸ are replaced by 1+x², by x+x³, by x²+x⁴, and by x³+x⁵=x³+1+x², respectively, while observing modulo m(x)=1+x²+x⁵, then in the polynomial representation g(x)=Zw₂(x)·α⁹(x) the following results

g(x)=g ₄ x ⁴ +g ₃ x ³ +g ₂ x ² +g ₁ x+g ₀ =Zw ₂(x)·α⁹(x)mod m(x)=(Zw ₂ ⁰ +Zw ₂ ¹ +Zw ₂ ⁴)x ⁴+(Zw ₂ ⁰ +Zw ₂ ³ +Zw ₂ ⁴)x ³+(Zw ₂ ² +Zw ₂ ³ +Zw ₂ ⁴)x ²+(Zw ₂ ⁰ +Zw ₂ ² +Zw ₂ ³)x ¹+(Zw ₂ ¹ +Zw ₂ ²)

as may be directly calculated.

The corresponding constant multiplier then comprises 5 binary inputs at which the coefficients Zw₂ ⁰, Zw₂ ¹, Zw₂ ², Zw₂ ³, Zw₂ ⁴ of the polynomial Zw₂(x) are input and it comprises five binary outputs at which the coefficients g₀, g₁, g₂, g₃, g₄ of the polynomial g(x) are output. These coefficients g₀, g₁, g₂, g₃, g₄ may be determined from the coefficients of the polynomial Zw₂(x) according to the following relation

Zw ₂ ¹ +Zw ₂ ² =g ₀,

Zw ₂ ⁰ +Zw ₂ ² +Zw ₂ ³ =g ₁,

Zw ₂ ² +Zw ₂ ³ +Zw ₂ ⁴ =g ₂,

Zw ₂ ⁰ +Zw ₂ ³ +Zw ₂ ⁴ =g ₃,

Zw ₂ ⁰ +Zw ₂ ¹ +Zw ₂ ⁴ =g ₄

A person skilled in the art will implement the relationships between the inputs and the outputs of the described constant multiplier for example by XOR operations or by other suitable operations.

For one embodiment now the functioning of the error correction is to be explained. Again the Galois field GF(2⁵) is considered. As H matrices exemplarily the matrices

H ₁=[α⁰α¹α³α²α⁴α⁵α⁶α⁷α⁸α⁹α¹⁰α¹¹α¹²α¹³α¹⁴α¹⁵α¹⁶α¹⁷α¹⁸α¹⁹α²⁰α²¹α²²]

H ₃=[α⁰α³α⁶α⁹α¹²α¹⁵α¹⁸α²¹α²⁴α²⁷α³⁰α²α⁵α⁸α¹¹α¹⁴α¹⁷α²⁰α²³α²⁶α²⁹α¹α⁴]

H ₅=[α⁰α⁵α¹⁰α¹⁵α²⁰α²⁵α³⁰α⁴α⁹α¹⁴α¹⁹α²⁴α²⁹α³α⁸α¹³α¹⁸α²³α²⁸α²α⁷α¹²α¹⁷]

are to be used.

If also the total parity is considered, the matrix H_(P) with

H _(P)=[11111111111111111111111]

may be added. In the considered embodiment an H matrix is considered which is put together only from submatrices H₁, H₃ and H₅.

By using the vector representation of the elements α^(j) according to Table 1, for H₁, H₃ and H₅ the following results

$H_{1} = \begin{bmatrix} 10000100101100111110001 \\ 01000010010110011111000 \\ 00010101100111110001101 \\ 00100010110011111000110 \\ 00001001011001111100011 \end{bmatrix}$ $H_{3} = \begin{bmatrix} 10000110010011111011100 \\ 00111110111000101011010 \\ 00001100100111110111000 \\ 01111101110001010110100 \\ 00100101101000011001001 \end{bmatrix}$ $H_{5} = \begin{bmatrix} 11110100010010101100001 \\ 00100010101100001110011 \\ 01101000011100110111110 \\ 00101100110111110100010 \\ 00110111110100010010101 \end{bmatrix}$

As the H matrix comprises 23 columns the code comprises the length n=23. As the H matrix comprises 15 rows it comprises 15 check bits and thus 8 data bits.

As an example, the error correction for a 1-bit error in the 12^(th) bit is to be explained. The associated error syndrome is then determined by the error vector e with

e=(00000000000100000000000)

The syndrome generator Synd 11 outputs the components s₁, s₃, s₅ of the error syndrome, wherein

H ₁ ·e=s ₁=α¹¹=(11100)^(T),

H ₃ ·e=s ₃=α²=(00100)^(T),

H ₅ ·e=s ₅=α²⁴=(01111)^(T)

applies. The error syndrome s=s₁, s₃, s₅ is equal to the 12^(th) column of the H matrix

$H = {\begin{pmatrix} H_{1} \\ H_{3} \\ H_{5} \end{pmatrix}.}$

The case is considered in which from the components of the error syndrome the intermediate values according to the circuitry of FIG. 5 are formed.

The subcircuits SZw₀, SZw₁, SZw₂, SZw₃ of FIG. 5 are configured so that the subcircuits SZw₀, SZw₁, SZw₂, and SZw₃, depending on the subsyndromes s₁, s₃, s₅, provide the intermediate values

Zw ₀ =+s ₁ ⁶ +s ₃ ² +s ₁ ³ +s ₃ +s ₁ ·s ₅,

Zw ₁ =s ₁ s ₃ +s ₅,

Zw ₂ =s ₁ ·[s ₁ ³ +s ₃+α⁰ ·N(s ₁ ,s ₃)]

Zw ₃ =s ₁ ³ +s ₃+α⁰ ·N(s ₁ ,s ₃)

wherein

N(s ₁ ,s ₃)=

and

(r ₁ ,r ₂ ,r ₃ ,r ₄ ,r ₅)=s ₁ ³ +s ₃=(α¹¹)³+α²=α³³+α²=α²+α²=0

apply. Thus, the following applies

N(s ₁ ,s ₃)=

=

= 0=1

The intermediate values Zw_(i) output at the circuit outputs of the subcircuit of FIG. 5 may then be determined for s₁=α¹¹, s₃=α², s₅=α²⁴ as follows:

Zw ₀ =s ₁ ⁶ +s ₃ ² +s ₁ ³ ·s ₃ +s ₁ ·s ₅=(α¹¹)⁶+(α²)²+(α¹¹)³·α²+α¹¹·α²⁴=α⁶⁶+α⁴+α³³·α²+α¹¹·α²⁴=α⁶⁶+α⁴+α³⁵+α³⁵=α⁴+α⁴+α⁴+α⁴=0

Zw ₁ =s ₁ ² ·s ₃ +s ₅=(α¹¹)²·α²+α²⁴=α²²·α²+·²⁴=α²⁴+α²⁴=0

Zw ₂ =s ₁ ·[s ₁ ³ +s ₃+α⁰ ·N(s ₁ ,s ₃)]=α¹¹·[(α¹¹)³+α²+α⁰ ·N(s ₁ ,s ₃)]=α¹¹·[α³³+α²+α⁰·1]=α¹¹·[α³³+α²+α⁰]=α¹¹·[α²+α²+α⁰]=α¹¹·α⁰=α¹¹

Zw ₃ =s ₁ ³ +s ₃+α⁰ ·N(s ₁ ,s ₃)=(α¹¹)³+α²+α⁰ ·N(s ₁ ,s ₃)=α³³+α²+α⁰·1=α³³+α²+α⁰=α²+α²+α⁰=α⁰

The subcircuit SK_(i) according to FIG. 2 may provide the 5 bit wide value z(12)=z₁ ¹², z₂ ¹², z₃ ¹², z₄ ¹², z₅ ¹² for i=12 and thus j_(i)=11 using the constant multipliers 21, 22, 23 and the XOR circuit 24 according to the following relation

Z(12)=(z ₁ ¹² ,z ₂ ¹² ,z ₃ ¹² ,z ₄ ¹² ,z ₅ ¹² ==Zw ₃·α³⁽¹¹⁾ +Zw ₂·α²⁽¹¹⁾ +Zw ₁·α¹¹ +Zw ₀.

As Zw₀=0, Zw₁=0, Zw₂=α¹¹, Zw₃=α⁰ the following results

$\begin{matrix} {\left( {z_{1}^{12},z_{2}^{12},z_{3}^{12},z_{4}^{12},z_{5}^{12}} \right) = {{{Zw}_{3} \cdot \alpha^{3 \cdot 11}} +}} \\ {{{{{Zw}_{2} \cdot \alpha^{2 \cdot 11}} + {{Zw}_{1} \cdot \alpha^{11}} + {Zw}_{0}} =}} \\ {= {{{\alpha^{0} \cdot \alpha^{33}} + {\alpha^{11} \cdot \alpha^{22}} + {0 \cdot \alpha^{11}} + 0} =}} \\ {= {\alpha^{33} + \alpha^{33}}} \\ {= {\alpha^{2} + \alpha^{2}}} \\ {= {\left( {0,0,0,0,0} \right).}} \end{matrix}$

The NOR circuit 25 may provide the value Δv₁₂,

Δv ₁₂=

=

= 0=1,

so that the error in the 12^(th) bit is corrected.

No further bits are corrected as z(i)≠0 results for all i≠12 and thus Δv_(i)=0.

Consequently, for example for i=7 and thus j_(i)=6 using the already determined values Zw₀=0, Zw₁=0, Zw₂=α¹¹, Zw₃=α⁰ by a direct calculation the following results:

$\begin{matrix} {\left( {z_{1}^{7}z_{2}^{7}z_{3}^{7}z_{4}^{7}z_{5}^{7}} \right) = {{{{Zw}_{3} \cdot \alpha^{3 \cdot 6}} + {{Zw}_{2} \cdot \alpha^{2 \cdot 6}} + {{Zw}_{1} \cdot \alpha^{6}} + {Zw}_{0}} =}} \\ {= {{{\alpha^{0} \cdot \alpha^{18}} + {\alpha^{11} \cdot \alpha^{12}} + {0 \cdot \alpha^{6}} + 0} =}} \\ {= {\alpha^{18} + \alpha^{23}}} \\ {= {(11000)^{T} + (11110)^{T}}} \\ {= (00110)^{T}} \\ {= \alpha^{20}} \\ {\neq 0} \end{matrix}$ $\begin{matrix} {{\Delta \; v_{7}} = \overset{\_}{z_{1}^{7}\bigvee z_{2}^{7}\bigvee_{3}^{7}{\bigvee{z_{4}^{7}\bigvee z_{5}^{7}}}}} \\ {= \overset{\_}{0\bigvee 0\bigvee 1\bigvee 1\bigvee 0}} \\ {= {\overset{\_}{1} = 0.}} \end{matrix}$

It was thus illustrated for the example of the 7^(th) bit that this bit is not corrected when a 1-bit error exists in another bit, here in the 12^(th) bit. It can be shown analogously for the other bits for the considered embodiment, most simply by direct calculation, that no correction takes place either.

The functioning of the disclosure is now to be explained for the example of a 2-bit error in the 5^(th) and 17^(th) bit.

The associated error syndrome is then determined by the error vector e with

e=(00001000000000001000000)

and the H matrix

$H = \begin{pmatrix} H_{1} \\ H_{3} \\ H_{5} \end{pmatrix}$

into

H ₁ ·e=s ₁=α⁴+α¹⁶=(00001)^(T)+(11011)^(T)=(11010)^(T)=α²⁷

H ₃ ·e=s ₃=α¹²+α¹⁷=(01110)^(T)+(11011)^(T)=(10111)^(T)=α¹⁴

H ₅ ·e=s ₅=α²⁰+α¹⁸=(00110)^(T)+(11000)^(T)=(11110)^(T)=α²³

by the syndrome generator Synd 11.

In contrast to a 1-bit error where s₁ ³+s₃=0 and N(s₁, s₃)=1, here

(r ₁ ,r ₂ ,r ₃ ,r ₄ ,r ₅)=s ₁ ³ +s ₃=(α²⁷)³+α¹⁴=α⁸¹+α¹⁴=α¹⁹+α¹⁴=(01100)^(T)+(10111)^(T)=(11011)^(T)=α¹⁶≠0

and

N(s ₁ ,s ₃)=

=

= 1=0.

From the syndrome values s₁=α²⁷, s₃=α¹⁴, s₅=α²³ the intermediate values Zw₀, Zw₁, Zw₂, Zw₃ are determined to be

Zw ₀ =s ₁ ⁶ +s ₃ ² +s ₁ ³ ·s ₃ +s ₁ ·s ₅=(α²⁷)⁶+(α¹⁴)²+(α²⁷)³·α¹⁴+α²⁷·α²³=α¹⁶²+α²⁸+α⁸¹·α¹⁴+α²⁷·α²³=α¹⁶²+α²⁸+α⁹⁵+α⁵⁰=α⁷+α²⁸+α²+α¹⁹=(00101)^(T)+(01101)^(T)+(00100)^(T)+(01100)^(T)=(00000)^(T)=0

Zw ₁ =s ₁ ² ·s ₃ +s ₅=(α²⁷)²·α¹⁴+α²³=α⁵⁴·α¹⁴+α²³=α⁶⁸+α²³=α⁶+α²³=(01010)^(T)+(11110)^(T)=(10100)^(T)=α⁵

Zw ₂ =s ₁ ·[s ₁ ³ +s ₃+α⁰ ·N(s ₁ ,s ₃)]=α²⁷·[(α²⁷)³+α¹⁴+α⁰ ·N(s ₁ ,s ₃)]=α²⁷·[α⁸¹+α¹⁴+α⁰·0]=α²⁷·[α¹⁹+α¹⁴]=α²⁷·α¹⁹α²⁷·α¹⁴=α⁴⁶+α⁴¹=α¹⁵+α¹⁰=(11111)^(T)+(10001)^(T)=(01110)^(T)=α¹²

Zw ₃ =s ₁ ³ +s ₃+α⁰ ·N(s ₁ ,s ₃)=(α²⁷)³+α¹⁴+α⁰ ·N(s ₁ ,s ₃)=α⁸¹+α¹⁴+α⁰·0=α¹⁹+α¹⁴=(01100)^(T)+(10111)^(T)=(11011)^(T)=α¹⁶

by the circuitry of FIG. 5.

The subcircuit SK_(i) 2 is implemented in FIG. 2 so that the XOR circuit 24 outputs the value z(i),

z(i)=(z ₁ ^(i) z ₂ ^(i) z ₃ ^(i) z ₄ ^(i) z ₅ ^(i))=Zw ₃·α^(3j) ^(i) +Zw ₂·α^(2j) ^(i) +Zw ₁·α^(j) ^(i) +Zw ₀

at its here m=5 bit wide output.

For i=5, j_(i)=4, Zw₀=0, Zw₁=α⁵, Zw₂=α¹², Zw₃=α¹⁶: the XOR circuit 24 outputs

z(5)=(z ₁ ⁵ z ₂ ⁵ z ₃ ⁵ z ₄ ⁵ z ₅ ⁵)=Zw ₃·+^(3·4) +Zw ₂·α^(2·4) +Zw ₁·α⁴ +Zw ₀=α¹⁶·α¹²+α¹²·α⁸+α⁵·α⁴+0=α²⁸+α²⁰+α⁹=(01101)^(T)+(00110)^(T)+(01011)^(T)=(00000)^(T)=0

and the NOR circuit 25 forms the correction value

Δv ₅=

=

= 0=1.

at its output.

For i=17, j_(i)=16, Zw₀=0, Zw₁=α⁵, Zw₂=α¹², Zw₃=α¹⁶: the XOR circuit 24 outputs

z(17)=(z ₁ ¹⁷ z ₂ ¹⁷ z ₃ ¹⁷ z ₄ ¹⁷ z ₅ ¹⁷)=Zw ₃·α^(3·16) +Zw ₂·α^(2·16) +Zw ₁·α¹⁶ +Zw ₀=α¹⁶·α⁴⁸+α¹²·α³²+α⁵·α¹⁶+0=α⁶⁴·α⁴⁴+α²¹=α²+α¹³+α²¹=(00100)^(T)+(00111)^(T)+(00011)^(T)=(00000)^(T)=0

and the NOR circuit 25 forms the correction value

Δv ₁₇=

=

= 0=1.

No further bits are corrected. Thus, for example for i=10, j_(i)=9, Zw₀=0, Zw₁=α⁵, Zw₂=α¹², Zw₃=α¹⁶ the following results:

z(10)=(z ₁ ¹⁰ ,z ₂ ¹⁰ ,z ₃ ¹⁰ ,z ₄ ¹⁰ ,z ₅ ¹⁰)=Zw ₃·α^(3·9) +Zw ₂·α^(2·9) +Zw ₁·α⁹ +Zw ₀=α¹⁶·α²⁷+α¹²·α¹⁸+α⁵·α⁹+0=α⁴³+α³⁰+α¹⁴=α¹²+α³⁰+α¹⁴=(01110)^(T)+(01001)^(T)+(10111)^(T)=(10000)^(T)=α⁰≠0

and the NOR circuit 25 outputs the correction value

Δv ₁₀=

=

= 1=0

so that no correction of the 10^(th) bit is made.

It is still to be noted that when s₁=s₃=s₅=0 applies, all correction signals Δv_(i) output by the subcircuits SK_(i) 13 i, i=1, . . . , n are equal 0. Advantageously it is not required, in case the error syndrome s=(s₁, s₃, s₅) indicates no error, to switch off the error correction circuit. In this case for the intermediate values Zw₀=0, Zw₁=0, Zw₂=0, Zw₃=α⁰ applies and thus z(i)=z(i)′=α⁰ and the NOR circuit 25 outputs the correction value Δv_(i)=0 at its output so that in the correction circuit Vkn 3, 14 in no bit a correction takes place.

It is illustrated in FIG. 6 how in one embodiment the circuitry illustrated in FIG. 1 may be supplemented by an error detection circuit SFE 62. Those subcircuits in FIG. 6 which correspond to the subcircuits illustrated in FIG. 1 are marked in FIG. 6 with the same reference numerals as in FIG. 1 and are not to be described again.

In contrast to the syndrome generator Synd 11 illustrated in FIG. 1, the syndrome generator Synd 611 illustrated in FIG. 6 comprises an additional 1-bit wide output which carries the signal s_(P), wherein s_(P)=v₁′⊕v₂′⊕ . . . ⊕v_(n)′ is the parity of the components v₁′, . . . , v_(n)′ of the word v′.

The error detection circuit SFE 62 comprises a first 1-bit wide input, a second m-bit wide input, a third m-bit wide input and a fourth m-bit wide input for inputting the subsyndromes s_(P), s₅, s₃ and s₁ output by syndrome generator Synd 611. It comprises an r-bit wide output at which an r-bit wide error signal E=E₁, . . . , E_(r) is output, wherein r≧1 applies.

It may be provided in embodiments that r=1 and E=E₁ apply and E₁ indicates an error for a first binary value and indicates for a second binary value that no error exists.

In one embodiment it may be provided that r=5 and E=E₁, E₂, E₃, E₄, E₅. Then, for example, a binary value E₁ may indicate whether a detectable error exists. A binary value E₂ may indicate whether a 1-bit error exists. A binary value E₃ may indicate whether a 2-bit error exists. A binary value E₄ may indicate whether a 3-bit error exists. A binary value E₅ may indicate whether a 4-bit error exists. It may be assumed in the considered embodiment that only 1-bit, 2-bit, 3-bit and 4-bit errors occur.

The error detection circuit SFE may be configured so that it implements the following relationships.

E ₁=1 when (s ₁ ,s ₃)≠0

E ₁=0 when (s ₁ ,s ₃)=0

E ₁=1 indicates that a detectable error exists, while E ₁=0 indicates that no detectable error exists.

E ₂=1 when s ₁ ³ +s ₃=0 and s _(P)=1

E ₂=0 else

E ₂=1 indicates that a 1-bit error exists, while E ₂=0 indicates that no 1-bit error exists.

E ₃=1, when s ₁≠0,s _(P)=0 and s ₁ ³ ·s ₃ +s ₁ ·s ₅ +s ₃ ² +s ₁ ⁶=0

E ₃=0 else

E ₃=1 indicates that a 2-bit error exists, while E ₃=0 indicates that no 2-bit error exists.

E ₄=1 when s ₁ ³ +s ₃≠0 and s _(P)=1

E ₄=0 else

E ₄=1 indicates that a 3-bit error exists, while E ₃=0 indicates that no 3-bit error exists.

E ₅=1, when s _(P)=0 and s ₁ ³ ·s ₃ +s ₁ ·s ₅ +s ₃ ² +s ₁ ⁶≠0

E ₅=0 else

E ₅=1 indicates that a 4-bit error exists while E ₅=0 indicates that no 4-bit error exists.

Surprisingly, the signal s₁ ³·s₃+s₁·s₅+s₃ ²+s₁ ⁶ used for differentiating 2- and 4-bit errors may be already provided at the output of the XOR circuit 55 and thus at the output of the subcircuit SZw₀ in the implementation of FIG. 5, and does not have to be generated again. The signal s₁ ³+s₃ may be output at the output of the XOR circuit 57. By implementing the error detection circuit SFE and the subcircuit SZw₀ for providing the intermediate value Zw₀ together, an especially advantageous implementation may result. Such an implementation is illustrated in FIG. 7.

The circuitry of FIG. 7 comprises the subcircuit SZw₀ as it was already described in connection with FIG. 5, and a subcircuit SFE′ 71 for error detection. The subcircuits of the subcircuit SZw₀ are marked with the same reference numerals as in FIG. 5 and are thus not to be described again.

The subcircuit SZw₀ in FIG. 7 is unchanged as compared to the subcircuit SZw₀ in FIG. 5.

The subcircuit SFE′ comprises a first 1-bit wide input which carries the subsyndrome s_(P), a second m-bit wide input which carries the subsyndrome s₁, a third m-bit wide input which carries the syndrome s₃ and a fourth m-bit wide input which is connected to the m-bit wide output of the XOR circuit 57 and which carries the value s₁ ³+s₃ and a fifth m-bit wide input which carries the value Zw₀=s₁ ³·s₃+s₁·s₅+s₃ ²+s₁ ⁶. In the described embodiment the subcircuit SFE′ 71 comprises five binary outputs.

The subcircuit for error detection SFE 62 and the subcircuit SZw₀ 120 in FIG. 6 are jointly implemented in FIG. 7.

The subcircuit SZw₀ consists of the subcircuits 51, 52, 53, 54, 55, 56, 57, 58 and the subcircuit SFE consists of the subcircuits 51, 52, 53, 54, 55, 56, 57, 58 and 71.

One possible implementation of the subcircuit SFE′ 71 of FIG. 7 is illustrated in FIG. 8. The first input carrying the 1-bit wide subsyndrome s_(P) may be connected to a first input of an AND gate 86 having two inputs and one output, connected negated to a first input of an AND gate 87 having two inputs and one output, to a first input of an AND gate 88 having two inputs and one output and connected negated to a first input of an AND gate 89 having two inputs and one output.

The second, m-bit wide input which carries the subsyndrome s₁ may be connected to m inputs of an OR circuit 81 having m inputs and one output which outputs the OR operation of the components of the subsyndrome s₁ at its 1-bit wide output.

The third m-bit wide input which carries the subsyndrome s₃ may be connected to m inputs of an OR circuit 82 having m inputs and one output wherein the circuit outputs the OR operation of the components of the subsyndrome s₃ at its 1-bit wide output.

The fourth m-bit wide input which carries the signal s₁ ³+s₃ which is output by the XOR circuit 57 in FIG. 7 may be connected to m inputs of an OR circuit 84 having m inputs and one output wherein the circuit outputs the OR operation of the components of the signal s₁ ³+s₃ at its 1-bit wide output.

The fifth m-bit wide input which carries the signal Zw₀=s₁ ³·s₃+s₁·s₅+s₃ ²+s₁ ⁶ which is output by the XOR circuit 55 in FIG. 7 may be connected to m inputs of an OR circuit 85 having m inputs and one output, wherein the circuit outputs the OR combination of the components of the signal s₁ ³·s₃+s₁·s₅+s₃ ²+s₁ ⁶s₁ ³+s₃ at its 1-bit wide output.

The 1-bit wide output of the OR circuit 81 may be connected both to a first input of an OR gate 83 having two inputs and one output and also to a first input of an AND gate 810 having two inputs and one output, wherein the second input of the gate 810 may be connected to the output of the AND gate 87, and wherein the component E₃ of the error signal E may be output at the output of the gate 810.

The output of the OR circuit 82 may be connected to the second input of the OR gate 83 whose output may output the components E₁ of the error signal E.

The output of the OR-circuit 84 may be connected noninverted with the second input of the AND-gate 88 and inverted with the AND-gate 86. The output of the AND-gate 86 may carry the component E₂ of the error signal E.

The AND-gate 88 may output the component E4 of error signal E. The output of the OR-circuit 85 may be connected noninverted with the second input of the AND-gate 89 and inverted with the second input of the AND-gate 810. The AND-gate 89 may output the component E5 of the error signal E. The output of the AND-gate 810 may carry the component E3 of the error signal E.

Although some aspects have been described in the context of an apparatus, it is clear that these aspects also represent a description of the corresponding method, where a block or device corresponds to a method step or a feature of a method step. Analogously, aspects described in the context of a method step also represent a description of a corresponding block or item or feature of a corresponding apparatus. Some or all of the method steps may be executed by (or using) a hardware apparatus, like for example, a microprocessor, a programmable computer or an electronic circuit. In some embodiments, some one or more of the most important method steps may be executed by such an apparatus.

Depending on certain implementation requirements, embodiments of the disclosure can be implemented in hardware or in software. The implementation can be performed using a digital storage medium, for example a floppy disk, a DVD, a Blue-Ray, a CD, a ROM, a PROM, an EPROM, an EEPROM or a FLASH memory, having electronically readable control signals stored thereon, which cooperate (or are capable of cooperating) with a programmable computer system such that the respective method is performed. Therefore, the digital storage medium may be computer readable.

Some embodiments according to the disclosure comprise a data carrier having electronically readable control signals, which are capable of cooperating with a programmable computer system, such that one of the methods described herein is performed.

Generally, embodiments of the present disclosure can be implemented as a computer program product with a program code, the program code being operative for performing one of the methods when the computer program product runs on a computer. The program code may for example be stored on a non-transitory machine readable carrier.

Other embodiments comprise the computer program for performing one of the methods described herein, stored on a machine readable carrier.

In other words, an embodiment of the inventive method is, therefore, a computer program having a program code for performing one of the methods described herein, when the computer program runs on a computer.

A further embodiment of the inventive methods is, therefore, a data carrier (or a digital storage medium, or a computer-readable medium) comprising, recorded thereon, the computer program for performing one of the methods described herein. The data carrier, the digital storage medium or the recorded medium are typically tangible and/or nontransitionary.

A further embodiment of the inventive method is, therefore, a data stream or a sequence of signals representing the computer program for performing one of the methods described herein. The data stream or the sequence of signals may for example be configured to be transferred via a data communication connection, for example via the Internet.

A further embodiment comprises a processing means, for example a computer, or a programmable logic device, configured to or adapted to perform one of the methods described herein.

A further embodiment comprises a computer having installed thereon the computer program for performing one of the methods described herein.

A further embodiment according to the disclosure comprises an apparatus or a system configured to transfer (for example, electronically or optically) a computer program for performing one of the methods described herein to a receiver. The receiver may, for example, be a computer, a mobile device, a memory device or the like. The apparatus or system may, for example, comprise a file server for transferring the computer program to the receiver.

In some embodiments, a programmable logic device (for example a field programmable gate array) may be used to perform some or all of the functionalities of the methods described herein. In some embodiments, a field programmable gate array may cooperate with a microprocessor in order to perform one of the methods described herein. Generally, the methods are preferably performed by any hardware apparatus.

The above described embodiments are merely illustrative for the principles of the present disclosure. It is understood that modifications and variations of the arrangements and the details described herein will be apparent to others skilled in the art. It is the intent, therefore, to be limited only by the scope of the impending patent claims and not by the specific details presented by way of description and explanation of the embodiments herein.

Although each claim only refers back to one single claim, the disclosure also covers any conceivable combination of claims. 

1. A circuitry SK for an error correction of at least 1-bit, 2-bit, and 3-bit errors of bits in an n-digit binary word v′=v₁′, . . . , v_(n)′ which resulted from bit errors from an n-digit codeword v=v₁, . . . , v_(n) of a binary BCH code C over the Galois field GF(2^(m)), wherein m≧4, wherein the code C comprises a code distance of at least d≧7, wherein the BCH code C comprises an H matrix H, so that m first rows of the H matrix form a submatrix H₁, m second rows of the H matrix form a second submatrix H₃ and further m rows of the H matrix form a third submatrix H₅ with H ₁=(h ₁ ¹ , . . . ,h ₁ ^(n) ,H ₃=(h ₃ ¹ , . . . ,h ₃ ^(n)) and H ₅=(h ₅ ¹ , . . . ,h ₅ ^(n)), wherein h ₁ ¹=α^(j) ¹ , . . . ,h ₁ ^(n)=α^(j) ^(n) , h ₃ ¹=α^(3(j) ¹ ⁾ , . . . ,h ₃ ^(n)=α^(3(j) ^(n) ⁾, h ₅ ¹=α^(5(j) ¹ ⁾ , . . . ,h ₅ ^(n)=α^(5(j) ^(n) ⁾, applies, α is an element of the Galois field GF (2^(m)) in its vector representation as an m-component binary column vector and the respective exponent j of α^(j) is to be interpreted modulo 2^(m)−1 and n≧2^(m)−1 applies, comprising: a syndrome generator Synd configured to determine an error syndrome s, wherein m first components of s form an m-component subsyndrome s₁, m second components of s form a second m-component subsyndrome s₃ and further m components of s form a third subsyndrome s₅, wherein s ₁ =H ₁ ·v′,s ₃ =H ₃ ·v′, and s ₅ =H ₅ ·v′ apply, a plurality of subcircuits wherein for each bit v₁′ subject to possible error correction of the n-digit binary word v′=v₁′, . . . , v_(n)′ a subcircuit SK_(i) exists which is configured so that it forms, from intermediate values Zw₀, Zw₁, Zw₂, Zw₃ which are equal for all bit positions subject to possible error correction, a correction value Δv_(i) according to the following relation Δv ₁=

wherein (z ₁ ^(i) ,z ₂ ^(i) , . . . ,z _(m) ^(i))=Zw ₃·α^(3j) ^(i) +Zw ₂·α^(2j) ^(i) +Zw ₁·α^(j) ^(i) +Zw ₀ and the intermediate values Zw₀, Zw₁, Zw₂, Zw₃ are determined depending on the subsyndromes s₁, s₃, s₅ so that in case of a 1-bit error or a 2-bit error or a 3-bit error the following applies: z^(i)=(z₁ ^(i), z₂ ^(i), . . . , z_(m) ^(i))=(0, 0, . . . , 0) when an error occurred in the bit position i and z^(i)=(z₁ ^(i), z₂ ^(i), . . . , z_(m) ^(i))≠(0, 0, . . . , 0) when no error occurred in the bit position i; wherein for determining the intermediate values Zw₀, Zw₁, Zw₂, and Zw₃ one subcircuit SZw₀, SZw₁, SZw₂ and SZw₃ each exists which is each configured so that it provides the same intermediate values Zw₀, Zw₁, Zw₂ and Zw₃ from the subsyndromes s₁, s₃, s₅ for each bit position subject to possible error correction of the word v′; and a combinational circuit Vkn configured to combine bits that are subject to possible error correction v_(i)′ in a component-wise manner with corresponding correction values Δv_(i) provided by the subcircuit SK_(i) into possibly corrected bits v_(i) ^(cor).
 2. The circuitry according to claim 1, wherein the combinational circuit Vkn is configured so that it combines bits v_(i)′ that are subject to possible error correction with corresponding correction values Δv_(i) provided by the subcircuit SK_(i) into possibly corrected bits v_(i) ^(cor), wherein the combination is an XOR operation and v_(i) ^(cor)=v_(i)′⊕Δv_(i) applies.
 3. The circuitry according to claim 1, wherein the subcircuits SZw₀, SZw₁, SZw₂ and SZw₃ are configured so that the subcircuits SZw₀, SZw₁ and SZw₂, depending on the subsyndromes s₁, s₃ and s₅, provide the intermediate values ${{Zw}_{0} = \left( {s_{1}^{3} + s_{3} + \frac{{s_{1}^{3} \cdot s_{3}} + {s_{1} \cdot s_{5}}}{s_{1}^{3} + s_{3} + {\alpha^{0} \cdot {N\left( {s_{1},s_{3}} \right)}}}} \right)},{{Zw}_{1} = \frac{{s_{1}^{2} \cdot s_{3}} + s_{5}}{s_{1}^{3} + s_{3} + {\alpha^{0} \cdot {N\left( {s_{1},s_{3}} \right)}}}},{{Zw}_{2} = s_{1}},{{Zw}_{3} = \alpha^{0}}$ wherein N(s ₁ ,s ₃)=

applies and (r ₁ ,r ₂ , . . . ,r _(m))=s ₁ ³ +s ₃ applies, wherein the operation + is the addition of the corresponding elements in the Galois field GF(2^(m)) which, in the vector representation, corresponds to the componentwise XOR-combination of the corresponding m-component binary vectors, and the operation · is the operation of the multiplication in the Galois field GF(2^(m)).
 4. The circuitry according to claim 3, wherein subcircuits for providing intermediate values are at least partially jointly implemented.
 5. The circuitry according to claim 1, wherein the subcircuits SZw₀, SZw₁, SZw₂ and SZw₃ are configured so that the subcircuits SZw₀, SZw₁, SZw₂, and SZw₃ provide the intermediate values ${{Zw}_{0} = {F \cdot \left( {s_{1}^{3} + s_{3} + \frac{{s_{1}^{3} \cdot s_{3}} + {s_{1} \cdot s_{5}}}{s_{1}^{3} + s_{3} + {\alpha^{0} \cdot {N\left( {s_{1},s_{3}} \right)}}}} \right)}},{{Zw}_{1} = {F \cdot \left( \frac{{s_{1}^{2} \cdot s_{3}} + s_{5}}{s_{1}^{3} + s_{3} + {\alpha^{0} \cdot {N\left( {s_{1},s_{3}} \right)}}} \right)}},{{Zw}_{2} = {F \cdot s_{1}}}$ Zw₃ = F ⋅ α⁰ wherein N(s ₁ ,s ₃)=

applies and (r ₁ ,r ₂ , . . . ,r _(m))=s ₁ ³ +s ₃ applies, wherein F is a factor not equal to zero for all values of the subsyndromes s₁, s₃, s₅, wherein the operation + is the addition of the corresponding elements in the Galois field GF(2^(m)) which, in the vector representation, corresponds to the componentwise XOR-combination of the corresponding m-component binary vectors, and the operation · is the operation of the multiplication in the Galois field GF(2^(m)).
 6. The circuitry according to claim 1, wherein the subcircuits SZw₀, SZw₁, SZw₂, SZw₃ are configured so that the subcircuits SZw₀, SZw₁, SZw₂ and SZw₃, depending on the sub-syndromes s₁, s₃, s₅, provide the intermediate values Zw ₀ =+s ₁ ⁶ +s ₃ ² +s ₁ ³ +s ₃ +s ₁ ·s ₅, Zw ₁ =s ₁ s ₃ +s ₅, Zw ₂ =s ₁ ·[s ₁ ³ +s ₃+α⁰ ·N(s ₁ ,s ₃)] Zw ₃ =s ₁ ³ +s ₃+α⁰ ·N(s ₁ ,s ₃) wherein N(s ₁ ,s ₃)=

applies and (r ₁ ,r ₂ , . . . ,r _(m))=s ₁ ³ +s ₃ applies and + is the addition of the corresponding elements in the Galois field GF(2^(m)) which, in the vector representation, corresponds to the componentwise XOR-combination of the corresponding m-component binary vectors, and the operation is the operation of the multiplication in the Galois field GF(2^(m)).
 7. The circuitry according to claim 6, wherein subcircuits for providing intermediate values are at least partially jointly implemented.
 8. The circuitry according to claim 1, wherein the parity of the bits v₁′, . . . , v_(n)′ is determined by at least one component of the error syndrome.
 9. The circuitry according to claim 8, wherein the H matrix comprises a subset of rows, so that the respective components of each column of the H matrix which belong to this subset of rows comprise an odd number of ones.
 10. The circuitry according to claim 9, wherein the subset of rows includes one single row.
 11. The circuitry according to claim 1, wherein an error detection circuit exists.
 12. The circuitry according to claim 11, wherein the error detection circuit indicates whether an i-bit error occurred for at least one iε{1, 2, 3, 4}.
 13. The circuitry according to claim 11, wherein the error detection circuit and the circuitry for error correction are at least partially jointly implemented.
 14. A method for error correction of at least 1-bit, 2-bit, and 3-bit errors of bits in an n-digit binary word which resulted from bit errors from an n-digit codeword v=v₁, . . . , v_(n) of a binary BCH code C over the Galois field GF(2^(m)), wherein m≧4, wherein the code C comprises a code distance of at least d≧7, wherein the BCH code C comprises an H matrix H, so that m first rows of the H matrix form a submatrix H₁, m second rows of the H matrix form a second submatrix H₃ and further m rows of the H matrix form a third submatrix H₅ with H ₁=(h ₁ ¹ , . . . ,h ₁ ^(n) ,H ₃=(h ₃ ¹ , . . . ,h ₃ ^(n)) and H ₅=(h ₅ ¹ , . . . ,h ₅ ^(n)), wherein h ₁ ¹=α^(j) ¹ , . . . ,h ₁ ^(n)=α^(j) ^(n) , h ₃ ¹=α^(3(j) ¹ ⁾ , . . . ,h ₃ ^(n)=α^(3(j) ^(n) ⁾, h ₅ ¹=α^(5(j) ¹ ⁾ , . . . ,h ₅ ^(n)=α^(5(j) ^(n) ⁾, applies, α is an element of the Galois field GF (2^(m)) in its vector representation as an m-component binary column vector and the respective exponent j of a′ is to be interpreted modulo 2^(m)−1 and n≧2^(m)−1 applies, wherein the method comprises: determining an error syndrome s, wherein m first components of s form an m-component subsyndrome s₁, m second components of s form a second m-component subsyndrome s₃ and further m components of s form a third subsyndrome s₅, wherein s ₁ =H ₁ ·v′,s ₃ =H ₃ ·v′, and s ₅ =H ₅ ·v′ apply, determining intermediate values Zw₀, Zw₁, Zw₂, and Zw₃ from the subsyndromes s₁, s₃, s₅, the intermediate values being the same for each bit position subject to possible error correction of the word v′; forming a correction value Δv_(i) for each bit v_(i)′ subject to possible error correction from the intermediate values Zw₀, Zw₁, Zw₂, Zw₃ which are equal for all bit positions subject to possible error correction, a according to the following relation Δv _(i)=

wherein (z ₁ ^(i) ,z ₂ ^(i) , . . . ,z _(m) ^(i))=Zw ₃·α^(3j) ^(i) +Zw ₂·α^(2j) ^(i) +Zw ₁·α^(j) ^(i) +Zw ₀ and the intermediate values Zw₀, Zw₁, Zw₂, Zw₃ are determined depending on the subsyndromes s₁, s₃, s₅ so that in case of a 1-bit error or a 2-bit error or a 3-bit error the following applies: z^(i)=(z₁ ^(i), z₂ ^(i), . . . , z_(m) ^(i))=(0, 0, . . . , 0) when an error occurred in the bit position i and z^(i)=(z₁ ^(i), z₂ ^(i), . . . , z_(m) ^(i))≠(0, 0, . . . , 0) when no error occurred in the bit position i; combining bits that are subject to possible error correction v_(i)′ in a componentwise manner with corresponding correction values Δv_(i) into possibly corrected bits v_(i) ^(cor).
 15. The method according to claim 14, wherein combining bits v_(i)′ that are subject to possible error correction with corresponding correction values Δv_(i) comprises performing an XOR operation so that v_(i) ^(cor)=v_(i)′ applies.
 16. The method according to claim 14, wherein determining the intermediate values Zw₀, Zw₁, Zw₂, and Zw₃ is based on the following relations: ${{Zw}_{0} = \left( {s_{1}^{3} + s_{3} + \frac{{s_{1}^{3} \cdot s_{3}} + {s_{1} \cdot s_{5}}}{s_{1}^{3} + s_{3} + {\alpha^{0} \cdot {N\left( {s_{1},s_{3}} \right)}}}} \right)},{{Zw}_{1} = \frac{{s_{1}^{2} \cdot s_{3}} + s_{5}}{s_{1}^{3} + s_{3} + {\alpha^{0} \cdot {N\left( {s_{1},s_{3}} \right)}}}},{{Zw}_{2} = s_{1}},{{Zw}_{3} = \alpha^{0}}$ wherein N(s ₁ ,s ₃)=

applies and (r ₁ ,r ₂ , . . . ,r _(m))=s ₁ ³ +s ₃ applies, the operation + is the addition of the corresponding elements in the Galois field GF(2^(m)) which, in the vector representation, corresponds to the componentwise combination of the corresponding m-component binary vectors, and the operation · is the operation of the multiplication in the Galois field GF(2^(m)).
 17. The method according to claim 14, wherein determining the intermediate values Zw₀, Zw₁, Zw₂, and Zw₃ is based on the following relations: Zw ₀ =+s ₁ ⁶ +s ₃ ² +s ₁ ³ +s ₃ +s ₁ ·s ₅, Zw ₁ =s ₁ s ₃ +s ₅, Zw ₂ =s ₁ ·[s ₁ ³ +s ₃+α⁰ ·N(s ₁ ,s ₃)] Zw ₃ =s ₁ ³ +s ₃+α⁰ ·N(s ₁ ,s ₃) wherein N(s ₁ ,s ₃)=

applies and (r ₁ ,r ₂ , . . . ,r _(m))=s ₁ ³ +s ₃ applies and + is the addition of the corresponding elements in the Galois field GF(2^(m)) which, in the vector representation, corresponds to the componentwise combination of the corresponding m-component binary vectors, and the operation · is the operation of the multiplication in the Galois field GF(2^(m)).
 18. A non-transitory storage medium having stored thereon a computer program having a program code for performing, when running on a computer, a method for error correction of at least 1-bit, 2-bit and 3-bit errors of bits in an n-digit binary word v′=v₁′, . . . , v_(n)′ which resulted from bit errors from an n-digit codeword v=v₁, . . . , v_(n) of a binary BCH code C over the Galois field GF(2^(m)), wherein m≧4, wherein the code C comprises a code distance of at least d≧7, wherein the BCH code C comprises an H matrix H, so that m first rows of the H matrix form a submatrix H₁, m second rows of the H matrix form a second submatrix H₃ and further m rows of the H matrix form a third submatrix H₅ with H ₁=(h ₁ ¹ , . . . ,h ₁ ^(n) ,H ₃=(h ₃ ¹ , . . . ,h ₃ ^(n)) and H ₅=(h ₅ ¹ , . . . ,h ₅ ^(n)), wherein h ₁ ¹=α^(j) ¹ , . . . ,h ₁ ^(n)=α^(j) ^(n) , h ₃ ¹=α^(3(j) ¹ ⁾ , . . . ,h ₃ ^(n)=α^(3(j) ^(n) ⁾, h ₅ ¹=α^(5(j) ¹ ⁾ , . . . ,h ₅ ^(n)=α^(5(j) ^(n) ⁾, applies, α is an element of the Galois field GF (2^(m)) in its vector representation as an m-component binary column vector and the respective exponent j of d is to be interpreted modulo 2^(m)−1 and n≧2^(m)−1 applies, wherein the method comprises: determining an error syndrome s, wherein m first components of s form an m-component subsyndrome s₁, m second components of s form a second m-component subsyndrome s₃ and further m components of s form a third subsyndrome s₅, wherein s ₁ =H ₁ ·v′,s ₃ =H ₃ ·v′, and s ₅ =H ₅ ·v′ apply, determining intermediate values Zw₀, Zw₁, Zw₂, and Zw₃ from the subsyndromes s₁, s₃, s₅, the intermediate values being the same for each bit position subject to possible error correction of the word v′; forming a correction value Δv_(i) for each bit v_(i)′ subject to possible error correction from the intermediate values Zw₀, Zw₁, Zw₂, Zw₃ which are equal for all bit positions subject to possible error correction, a according to the following relation Δv ₁=

wherein (z ₁ ^(i) ,z ₂ ^(i) , . . . ,z _(m) ^(i))=Zw ₃·α^(3j) ^(i) +Zw ₂·α^(2j) ^(i) +Zw ₁·α^(j) ^(i) +Zw ₀ and the intermediate values Zw₀, Zw₁, Zw₂, Zw₃ are determined depending on the subsyndromes s₁, s₃, s₅ so that in case of a 1-bit error or a 2-bit error or a 3-bit error the following applies: z^(i)=(z₁ ^(i), z₂ ^(i), . . . , z_(m) ^(i))=(0, 0, . . . , 0) when an error occurred in the bit position i and z¹=(z₁ ^(i), z₂ ^(i), . . . z_(m) ^(i))≠(0, 0, . . . 0) when no error occurred in the bit position i; and combining bits that are subject to possible error correction v_(i)′ in a componentwise manner with corresponding correction values Δv_(i) into possibly corrected bits v_(i) ^(cor). 